Archive for the ‘Tips dan Trik Delphi’ Category

Load Gambar Menggunakan Delphi

October 8, 2008

Dapet lagi dari forum delphi-id[dot]org, kebetulan yang posting adalah master delphi sekaligus moderator yang handal di forum. Mumpung masih hangat dan belum hilang dari daftar aku langsung salin deh, berikut salinannya:

Kitik-kitik berikut mungkin dapat dipertimbangkan Smile

  1. function LoadJPEGImage(const Source: TField; const Dest: TPicture): Boolean;
  2. var Temp: TStream;
  3. Img: TJPEGImage;
  4. begin
  5. Result:= (Source is TBlobField) and (Source.Size > 0); // is greather than zero?
  6. if Result then
  7. begin
  8. Temp:= TMemoryStream.Create;
  9. try
  10. TBlobField(Source).SaveToStream(Temp);
  11. Temp.Seek(0, soFromBeginning);
  12. Dest.Graphic:= nil;
  13. Img:= TJPEGImage.Create;
  14. try
  15. Img.LoadFromStream(Temp);
  16. Dest.Graphic:= Img;
  17. except
  18. if not Assigned(Dest.Graphic) then
  19. FreeAndNil(Img)
  20. else
  21. Dest.Graphic:= nil;
  22. Result:= False;
  23. end;
  24. finally
  25. FreeAndNil(Temp);
  26. end;
  27. end;
  28. end;

Penggunaan:

  1. begin
  2. if not LoadJPEGImage(DM.QueIklan2Level1, Image1.Picture) then
  3. raise Exception.Create('Cannot load image!');
  4. end;

Bagi yang berminat, silahkan langsung kopi….

Advertisements

Kode Untuk Membuka Cash Drawer Menggunakan Delphi

October 8, 2008

Aku memang belum coba sih, soalnya belum ada project yang terkait. Tapi buat persiapan boleh lah aku tulis di sini :). Kebetulan ada member di delphi-id[dot].org yang kasih tau, biar gak lupa aku salin deh. Berikut petikan postingannya:

Kalo untuk codingnya saya gunakan perintah ini,

  1. WriteLn (#27 + #112 + #0 + #25 + #250);

Kombinasi angka itu saya dapat dari manual EPSON, sedangkan yang saya punya Cash Register Sharp XE A203. Dan kombinasi tersebut belum saya buktikan benar atau tidaknya, karena saya belum bisa menghubungkan Cash Drawer dengan komputer.

Kalau coding untuk VB seperti apa? Mungkin nanti bisa saya convert ke delphi.

Bagi yang mau mencobanya silahkan…

Change the system time

August 28, 2007

{
The input strings for date and time depends on the format you are using.
}

procedure TForm1.Button1Click(Sender: TObject);
var
SystemTime: TSystemTime;
NewTime, NewDate: string;
begin
NewTime := ’12:00:00′;
NewDate := ‘01.01.2006’;
DateTimeToSystemTime(StrToDate(NewDate) + StrToTime(NewTime), SystemTime);
SetLocalTime(SystemTime);
// Tell windows, that the Time changed!
PostMessage(HWND_BROADCAST, WM_TIMECHANGE, 0, 0); // *
end;

Implement the Pascal Delay-function

August 28, 2007

procedure Delay(dwMilliseconds: Longint);
var
iStart, iStop: DWORD;
begin
iStart := GetTickCount;
repeat
iStop := GetTickCount;
Application.ProcessMessages;
until (iStop – iStart) >= dwMilliseconds;
end;

Swap the mouse buttons

August 28, 2007

procedure SwapMouseButtons(bValue: Boolean);
begin
if bValue then
SystemParametersInfo(SPI_SETMOUSEBUTTONSWAP, 1, nil, 0)
else
SystemParametersInfo(SPI_SETMOUSEBUTTONSWAP, 0, nil, 0);
end;

Detect a keypress during a loop

August 28, 2007

procedure TForm1.Button1Click(Sender: TObject);
var
LoopAborted: Boolean;
i: Integer;
begin
LoopAborted := False;
i := 0;
repeat
Caption := IntToStr(i);
Application.ProcessMessages;
if GetKeyState(VK_Escape) and 128 = 128 then
begin
LoopAborted := True;
Break;
end;
Inc(i);
until i = 100000;
if LoopAborted then
ShowMessage(‘User has aborted the loop!’);
end;