이전에 이런 질문을 받았지만 찾을 수없는 것 같습니다. 아래 코드를 사용하여 MS Access 데이터베이스에서 이미지를 표시합니다. 그러나 다음을 수행하는 방법을 알고 싶습니다.다른 양식의 절차를 호출 하시겠습니까?
- 아래 절차를 따르고 다른 형식으로 '호출'할 수 있습니까?
시나리오 : 3 가지 양식. 세 개의 테이블, 하나의 데이터베이스. TADOTable 구성 요소 및 TADOConnection을 통해 테이블에 액세스합니다.
각 양식에는 데이터베이스 (btnShowImage)가있어 데이터베이스에서 사진을 볼 수 있습니다. 현재 작동하려면 폼에 함수를 추가 한 다음 btnShowImage.OnClick에 함수를 추가해야합니다. 아래에 표시된대로 프로 시저를 추가합니다. 이것은 세 가지 형식 모두에서 발생합니다. 내 질문은 : 어쨌든 더 효율적으로 만들 수 있습니까? 이 코드를 세 가지 형식 모두에 추가하는 것은 약간 지루한 것처럼 보입니다. 기본적으로 동일한 경우 (이 과정에서 테이블 이름은 세 가지 형식 모두에서 다릅니다). 각 양식에서이 코드를 모두 사용하지 않고도이 작업을 수행하는 간단한 방법 (이미지 표시)이 있습니까?
도움 주셔서 감사합니다.
CODE :
...uses
JPEG, ADODB, DB
function JpegStartsInBlob(PicField: TBlobField): integer;
var
bS: TADOBlobStream;
buffer: Word;
hx: string;
begin
Result := -1;
bS := TADOBlobStream.Create(PicField, bmRead);
try
while (Result = -1) and (bS.Position + 1 < bS.Size) do begin
bS.ReadBuffer(buffer, 1);
hx := IntToHex(buffer, 2);
if hx = 'FF' then begin
bS.ReadBuffer(buffer, 1);
hx := IntToHex(buffer, 2);
if hx = 'D8' then
Result := bS.Position - 2
else if hx = 'FF' then
bS.Position := bS.Position - 1;
end;
end;
finally
bS.Free
end;
end;
procedure Tfrm3.btnShowImageClick(Sender: TObject);
var
bS: TADOBlobStream;
Pic: TJPEGImage;
begin
bS := TADOBlobStream.Create(table1.FieldByName('Photo')
as TBlobField, bmRead);
bS.Seek(JpegStartsInBlob(table1.FieldByName('Photo') as TBlobField),
soFromBeginning);
Pic := TJPEGImage.Create;
Pic.LoadFromStream(bS);
frmOne.Image1.Picture.Graphic := Pic;
Pic.Free;
bS.Free;
end;
코드에 발견 : 나는 거의 있었다 3 개 가지 형태의 버튼에서 호출해야했습니다 코드를 가지고 있다면 내가 할 것이 무엇 http://delphi.about.com/od/database/l/aa030601d.htm
새 단위를 만들고 거기에 절차를 입력하십시오. 그런 다음 모든 양식에서 사용하십시오 ... – Adam
내 생각도 있지만, 어떻게 각각의 테이블 이름을 바꿀까요? – coder123
또는 데이터베이스 연결과 함께 [TDataModule] (http://www.delphipages.com/forum/showthread.php?t=208044)에 넣으십시오. –