Arsip: Efisien Coding (menampilkan 2 gambar)

more 16 years ago
zones
Delphiers mo tanya dong apakah ada yang lebih efisien dari ini, gunanya utk menampilkan 2 gambar sekaligus dalam 1 form.
procedure TfrmPreviewGambar.SpeedButton5Click(Sender: TObject);
var
Stream1, Stream2 : TADOBlobStream;
GambarJpeg1, GambarJpeg2 : TJpegImage;
Buffer1, Buffer2 : Word;
begin
GambarJpeg1 := TJpegImage.Create;
GambarJpeg2 := TJpegImage.Create;
Stream1 := TADOBlobStream.Create(DM.QueIklan2Level1, bmRead);
Stream1.Read(Buffer1, SizeOf(Buffer1));
Stream1.Position := 0;
Stream2 := TADOBlobStream.Create(DM.QueIklan2Level2, bmRead);
Stream2.Read(Buffer2, SizeOf(Buffer2));
Stream2.Position := 0;
if Buffer1 = $D8FF then
begin
GambarJpeg1.LoadFromStream(Stream1);
Image1.Picture.Graphic := GambarJpeg1;
end;
if Buffer2 = $D8FF then
begin
GambarJpeg2.LoadFromStream(Stream2);
Image2.Picture.Graphic := GambarJpeg2;
end;
end;

more 16 years ago
saysansay
Saya Coba menampilkan dalam versi yang berbeda Semoga bisa jadi bahan pembelajaran:
Function ShowImage(FQry:TADOQuery,FBufer:word):TJpegImage;
Var
FGambar:TJpegImage;FStream: TADOBlobStream;
begin
Try
FGambar := TJpegImage.Create ;
Fstream := TADOStream.Create(Fqry,bmRead);//Fqry tidak dicretae karena merupakan variable Dummy
FStream.Read(FBufer,SizeOf(FBufer)) ;
Stream.Position:=0;
if FBufer=$D8EFF Then
Begin
Fgambar.LoadFromStream(Fstream);
Result :=Fgambar;
end;
Finnaly
FGambar.Free;
FStream.Free;
end
end;
Cara Penggunaan :
Image1.Picture.Graphic:=ShowImange(DM.QueIklan2Level1,$D8FF);
Image2.Picture.Graphic:=ShowImange(DM.QueIklan2Level2,$D8FF);
Note : Untuk rekan-rekan yang lain, Tolong gunakan Forum untuk sharing informasi dan bukan untuk ajang OOT. Terutama Om@eksant lebih baik diam dari pada tidak memberikan solusi (sorry saya hanya menggingatkan demi menjaga qualitas forum kita)
more 16 years ago
zones
@saysansay
" Fstream := TADOStream.Create(Fqry,bmRead); //Fqry tidak dicretae karena merupakan variable Dummy "
tidak dicreate karena hanya menggunakan streamnya saja yahc bawaan dari ADODB klo ndak salah hee,,,, :d (pake bahasa yg di mengerti sendiri). OK nanti malam saya akan mengupas pemberian mas saysansay.

more 16 years ago
zones
@saysansay
saya sdh mencoba function yang diberikan, tetapi ada sedikit kendala di :
"FStream := TAdoBlobStream.Create(FQry, bmRead);" ==> "[Error] Unit1.pas(61): Incompatible types: 'TBlobField' and 'TADOQuery"
Bukankah TBlobField sdh ada di TAdoQuery yahc ?karena sama2 dari unit ADODB.
berikut listing lengkapnya :
function ShowImage(FQry:TAdoQuery; FBufer: word):TJpegImage;
var
FGambar : TJpegImage;
FStream : TADOBlobStream;
begin
try
FGambar := TJpegImage.Create;
FStream := TAdoBlobStream.Create(FQry, bmRead);
FStream.Read(FBufer, SizeOf(FBufer));
FStream.Position := 0;
if FBufer = $D8FF then
begin
FGambar.LoadFromStream(FStream);
Result := FGambar;
end;
Finally;
FGambar.Free;
FStream.Free;
end
end;

more 16 years ago
deLogic
coba diganti menjadi FStream := TADOBlobStream.Create(FQry.FieldByName('NAMAFIELDNYA'), bmRead)

more 16 years ago
DelphiExpert
Koreksi utk San:
if FBufer=$D8EFF Then
Begin
...
Result := Fgambar; // NB: RETURN VALUE MENGEMBALIKAN POINTER KE LOCAL VARIABLE FGAMBAR
end;
Finnaly
FGambar.Free; // NB: RETURN VALUE BELUM DIPAKE UDAH DI FREE? berpotensi EAccessViolation!
end;
Kitik-kitik berikut mungkin dapat dipertimbangkan :)
function LoadJPEGImage(const Source: TField; const Dest: TPicture): Boolean;
var Temp: TStream;
Img: TJPEGImage;
begin
Result:= (Source is TBlobField) and (Source.Size > 0); // is greather than zero?
if Result then
begin
Temp:= TMemoryStream.Create;
try
TBlobField(Source).SaveToStream(Temp);
Temp.Seek(0, soFromBeginning);
Dest.Graphic:= nil;
Img:= TJPEGImage.Create;
try
Img.LoadFromStream(Temp);
Dest.Graphic:= Img;
except
if not Assigned(Dest.Graphic) then
FreeAndNil(Img)
else
Dest.Graphic:= nil;
Result:= False;
end;
finally
FreeAndNil(Temp);
end;
end;
end;
Penggunaan:
begin
if not LoadJPEGImage(DM.QueIklan2Level1, Image1.Picture) then
raise Exception.Create('Cannot load image!');
end;

more 16 years ago
saysansay
@zones maaf klu sebelumnya saya tidak mencobanya terlebih dahulu :D,
mas @DL,@DE Thanks untuk koreksinya

more 16 years ago
zones
hee.... @saysansay ndak apa2 toch saya lebih mengerti apa yang ingin di beritahukan, setelah melihat ralat dari @DE jadi tau TAdoBlob itu masuk ke Tfield. Thanks to @DE mungkin function yang diberikan bisa di gunakan utk hal yang lain <==terinspirasi soale ada permasalahan yang sama.
more ...
- Pages:
- 1
reply |
Report Obsolete
AI Forward

🚀 We're thrilled to partner with Alibaba Cloud for "AI Forward - Alibaba Cloud Global Developer Summit 2025" in Jakarta! Join us and explore the future of AI. Register now:
https://int.alibabacloud.com/m/1000400772/
#AlibabaCloud #DeveloperSummit #Jakarta #AIFORWARD
Last Articles
Last Topic
- PascalTalk #6: (Podcast) Kuliah IT di luar negeri, susah gak sih?
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #5: UX: Research, Design and Engineer
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #4: Obrolan Ringan Seputar IT
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #2: Membuat Sendiri SMART HOME
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #3: RADically Fast and Easy Mobile Apps Development with Delphi
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #1: Pemanfaatan Artificial Intelligence di Masa Covid-19
by LuriDarmawan in Tutorial & Community Project more 4 years ago - Tempat Latihan Posting
by LuriDarmawan in OOT more 5 years ago - Archive
- Looping lagi...
by idhiel in Hal umum tentang Pascal Indonesia more 12 years ago - [ask] koneksi ke ODBC user Dsn saat runtime dengan ado
by halimanh in FireBird more 12 years ago - Validasi menggunakan data tanggal
by mas_kofa in Hal umum tentang Pascal Indonesia more 12 years ago
Random Topic
- Minta Bantuannya.......'temen2,,,
by musespratama in Lain-lain more 13 years ago - Menampilkan Daftar Database Mysql
by ekosch in MySQL more 16 years ago - syntax error in from clause
by fongers in Hal umum tentang Pascal Indonesia more 14 years ago - notebook ACER gratis man
by dinox in OOT more 19 years ago - mencegah process dari end task
by doniking in Tip n Trik Pemrograman more 17 years ago - Menampilkan dua buah tabel
by pilot in Tip n Trik Pemrograman more 17 years ago - Cara Edit,Hapus,Tampilkan Data berfoto???
by camp_sire in Tip n Trik Pemrograman more 17 years ago - Path DB kalo pas ganti kompie ama foldernya
by pinguinz in Hal umum tentang Pascal Indonesia more 17 years ago - TMainForm....????
by prototius in Tip n Trik Pemrograman more 17 years ago - Bikin angka pada edit text yang ada titik/komanya
by or4n3 in Tip n Trik Pemrograman more 17 years ago