Lazarus 0.9.22 beta with GTK+2

Posted Monday, 24 September 2007 by kakadelphi
Categories: Cocooan

Beberapa hari yang lalu, ketika melihat blog om simba serasa jadi ngiler melihat tampilan lazarus di Ubuntu yang keren banget. (Ceritanya pengen nich …. :D )

Walapun sudah mencoba saat lazarus masih di versi 0.9.18 beta pada distro linux Slackware, hanya yang menjadi kendala untuk belajar yaitu, tampilan GTK1-nya yang kurang mantab. Tapi, pas liat tampilan yang GTK2, wuiihhh …. jadi ngiler nich ….

Wokeh …. ceritanya mau install lazarus 0.9.22 beta nich, peralatan yang disiapkan adalah FreePascal-2.0.4, Lazarus-0.9.22 dan sekarang adalah target distro memakai Ubuntu Feisty Fawn yang seperti di skrinsyutnya om simba

Pada awalnya, tidak ada sesuatu yang aneh terjadi pada proses instalasi. Karena ubuntu based Debian jadi apabila ada depedensi yang di butuhkan, tinggal di apt-get aja … gampang kok. Nah untuk repository-nya supaya tidak terlalu jauh ke situs asalnya, gunakan repository lokal seperti di kambing.ui.edu

Ceritanya instalasi beres, dan lazarus pun sukses di jalankan. Selanjutnya adalah tinggal compile lazarus ke widgetset GTK+2, caranya tinggal pilih Tools | Configure “Build Lazarus” … lalu pada LCL Interface, pilih “gtk2″. Selanjutnya klik “Build”

Sambil menunggu proses kompilasi, saya tinggalkan dulu sebentar ….

Setelah dilihat …. jreng …. hasilnya ada : “/usr/bin/ld cannot find -lgdk_pixbuf2 Error while linking”. Hmmmm ….. apa nich error seperti ini ? padahal saya sudah install depedensi libgdk-pixbuf-2.0. Mulai pusing nich …. Masalah ini terus aja muncul sampai 2 hari … (fyuuuh … sampai sempet ganti2 distro ubuntu, mulai dari dapper sampai gutsy yang masih unstable :D ). Saat saya kasih status di YM “Trying to compile lazarus with GTK+2 got Error : …… “, dan ternyata ada yang nyambung juga dan yang nyambung itu adalah tiada bukan tiada lain ….. betul ….. simba. Di kasih masukkan from zero to hero .. (eh ..) masih juga belum mempan. Pussssinngggg ………….. But inget om Ulil untuk “TETAP SEMANGAT”, so saya lanjutin perjuangan untuk compile lazarus (Never Give Up) . Karena ubuntu saya udah terlanjur acak-acakan, jadi saya coba untuk install dari awal lagi.

Ubuntu Feisty Fawn fresh copy sudah ready to use , tetapi saat kompilasi, masih aja errod …. huuuh apaan sich. Usut punya usut, ternyata sekarang saya kurang depedensi :

sudo apt-get install libgtk2.0-dev
sudo apt-get install libgdk-pixbuf-dev

Got you … Nah, sekarang lazarus dengan GTK+2 sudah terinstall di Ubuntu-ku … he … he …. 3x. Ngoprek nich ngoprek

 

Kaos Delphi-ID

Posted Friday, 16 March 2007 by kakadelphi
Categories: Umum

Mumpung masih bisa onlen, jadi gw nulis aja sekalian …. he …3x

Tanggal 13 Maret 2007 kemaren gw dapet kiriman dari Semarang dan taunya eeeeehhh …. itu lho kaos Delphi-ID yang kutunggu datang juga. Tepatnya pada sore hari dia datangnya, langsung aja gw pake buat JJS dan gw pake buat tidur juga …. he … 3x

Sampai tulisan ini dibuat, tu kaos blom gw cuci … :D biar awet ga cepet belel …. :P

Sayang dong … baju kebesaran jadi lap …. kekekekekkkk ….

BTW …. skirnsyut nya blom bisa gw tampilin, lupa gw ga di jepret dulu :D . Ntar kapan2 gw pajang dech skrinsyut nya.

Bete Tanpa Koneksi Internet

Posted Friday, 16 March 2007 by kakadelphi
Categories: Umum

Ach …. akhir2 ini diriku jarang banget berinternet, bete banget …. ni blog pun kena imbasnya jadi ga keurus ….

Dan yang paling menyedihkan adalah ga bisa nongkrong di tempat tongkrongan gw, ya di Delphi-ID.

Ach …. bete dech pokoknya ….

Yoo …. ada yang punya internet ga ? gw minta nich ….

Set default printer

Posted Wednesday, 13 September 2006 by kakadelphi
Categories: Tip's n' Trik's

Ingin ngeset default printer pake koding delphi … ? Berikut cuplikan source code nya :

type
  TDevice = record
  Name, Driver, Port: string;
  end;

var
  Devices: array of TDevice;
  DDevice: TDevice; // current default printer
Syntax Highlighted with http://delphi-id.org/syntax

Pada event OnCreate TForm, tulis skrip beriut :

procedure TForm1.FormCreate(Sender: TObject);
var
  WinIni: TIniFile;
  DevList: TStringList;
  device: string;
  i, p: integer;
begin
  WinIni := TIniFile.Create('WIN.INI'); 

// Get the current default printer
  device := WinIni.ReadString('windows', 'device', ',,');
  if device = '' then device := ',,';
  p := Pos(',', device);
  DDevice.Name := Copy(device, 1, p-1);
  device := Copy(device, p+1, Length(device)-p);
  p := Pos(',', device);
  DDevice.Driver := Copy(device, 1, p-1);
  DDevice.Port := Copy(device, p+1, Length(device)-p); 

// Get the printers list 

  DevList := TStringList.Create;
  WinIni.ReadSectionValues('Devices', DevList); 

// Store the printers list in a dynamic array
  SetLength(Devices, DevList.Count);
  for i := 0 to DevList.Count - 1 do begin
  device := DevList[i];
  p := Pos('=', device);
  Devices[i].Name := Copy(device, 1, p-1);
  device := Copy(device, p+1, Length(device)-p);
  p := Pos(',', device);
  Devices[i].Driver := Copy(device, 1, p-1);
  Devices[i].Port := Copy(device, p+1, Length(device)-p); 

// Add the printer to the ListBox 

  ListBox1.Items.Add(Devices[i].Name
    + ' (' + Devices[i].Port + ')'); 

// Is the current default printer?
  if (CompareText(Devices[i].Name, DDevice.Name) = 0) and
     (CompareText(Devices[i].Driver, DDevice.Driver) = 0) and
     (CompareText(Devices[i].Port, DDevice.Port) = 0) then
    ListBox1.ItemIndex := i;  // Make it the selected printer 

  end;
  WinIni.Free;
end;
Syntax Highlighted with http://delphi-id.org/syntax

Contoh penggunaan nya, tambakan komponen TButton dan TListBox. Pada event OnClick TButton, sisipkan kode berikut :

procedure TForm1.Button1Click(Sender: TObject);
var
  WinIni: TIniFile;
begin
  if ListBox1.ItemIndex = -1 then exit;
  DDevice := Devices[ListBox1.ItemIndex];
  WinIni := TIniFile.Create('WIN.INI');
  WinIni.WriteString('windows', 'device', DDevice.Name
  + ',' + DDevice.Driver + ',' + DDevice.Port);
  WinIni.Free;
  SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0,
  LPARAM(pchar('windows')));

end;
Syntax Highlighted with http://delphi-id.org/syntax

Pada event OnClick TListBox, sisipkan kode berikut :

procedure TForm1.ListBox1Click(Sender: TObject);
begin
  Button1Click(Sender);
end;
Syntax Highlighted with http://delphi-id.org/syntax

Untuk contoh project, dapat di download di PublicFolder dengan nama SetDefPrinter.rar

Cara mendapatkan printer pada suatu komputer (di jaringan yang di share tentunya)

Posted Wednesday, 13 September 2006 by kakadelphi
Categories: Tip's n' Trik's

Pertama: masukkan unit Winspool dan Printers pada klausa Uses.
Parameter psName adalah nama komputer di jaringan dan di simpan di TStrings.
Kita dapat menggunakan Combo atau ListBox.

Berikut cuplikan source code nya :

function TForm1.GetPrintServers(psName: string): TStrings;
var
  lpBuffer,lpPrinterInfo: PChar;
  lcCount,lcNumCount : DWord ;
  liCount,liAux:integer;
  lsAuxNome:TStrings; 

function GetContexts ( pctipo : cardinal; ppName : PChar ):TStringlist;
  var
  liCont : integer;
  lsNome:string;
  lbPode:boolean; 

begin
  lbPode:=false;
  Result:=TStringlist.Create;
  case pcTipo of
    8: lbPode :=
    EnumPrinters(pctipo,ppName,1,PByte(lpBuffer),lcCount,lcCount,
      lcNumCount);
    16: lbPode :=
    EnumPrinters(pctipo,nil,1,PByte(lpBuffer),lcCount,lcCount,
      lcNumCount);
  end;
  if not lbPode then
    Exit;
  lpPrinterInfo := lpBuffer;
  for licont := 0 to lcNumCount - 1 do
  begin
    with PPrinterInfo1(lpPrinterInfo)^ do
    begin
    if pcTipo = 8 then
    begin
      liAux:=Pos(',',pDescription);
      lsNome := copy(pDescription,liAux+1,Length(pDescription));
      Result.Add(lsNome);
    end
    else
    begin
      liAux  := Pos(ppName,pName);
      lsNome := copy(pName,liAux,Length(pName));
      if lsNome = ppName then
      begin
      Result.Add(string(pName));
      Exit;
      end;
    end;
    end;
    Inc(lpPrinterInfo, sizeof(TPrinterInfo1));
  end;
  end; 

begin
  lsAuxNome:=TStrings.Create;
  lcCount := 0;
  EnumPrinters(PRINTER_ENUM_REMOTE,nil,1,nil,0,lcCount,lcNumCount);
  GetMem(lpBuffer,lcCount);
  lsAuxNome := GetContexts(16,PChar(psName));
  if lsAuxNome.Count <> 0   then
  Result:=GetContexts(8,PChar(lsAuxNome.Strings[0]))
  else
  begin
  lsAuxNome.Add('Printer tidak ditemukan');
  Result:=lsAuxNome;
  end; 

end;
Syntax Highlighted with http://delphi-id.org/syntax

Contoh penggunaan nya, tambakan komponen TButton dan TListBox. Pada event OnClick TButton, sisipkan kode berikut :

procedure TForm1.Button1Click(Sender: TObject);
begin
  ListBox1.Items:= GetPrintServers(Edit1.Text);
end;
Syntax Highlighted with http://delphi-id.org/syntax


Untuk contoh project, dapat di download di PublicFolder dengan nama ScanPrinter.rar

Cara mendapatkan komputer di jaringan

Posted Wednesday, 13 September 2006 by kakadelphi
Categories: Tip's n' Trik's

Bila komputer kita terkoneksi di suatu jaringan, dan ingin mencari komputer yang berada di jaringan dengan coding delphi ?
Berikut cuplikan source code nya :

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
  Button1: TButton;
  ListBox1: TListBox;
  Label1: TLabel;
  procedure Button1Click(Sender: TObject);
  private
  { Private declarations }
  public
  { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

type
  PNetResourceArray = ^TNetResourceArray;
  TNetResourceArray = array[0..100] of TNetResource;

function CreateNetResourceList(ResourceType: DWord;
                NetResource: PNetResource;
                out Entries: DWord;
                out List: PNetResourceArray): Boolean;
var
  EnumHandle: THandle;
  BufSize: DWord;
  Res: DWord;
begin
  Result := False;
  List := Nil;
  Entries := 0;
  if WNetOpenEnum(RESOURCE_GLOBALNET,
          ResourceType,
          0,
          NetResource,
          EnumHandle) = NO_ERROR then begin
  try
    BufSize := $4000;  // 16 kByte
    GetMem(List, BufSize);
    try
      repeat
        Entries := DWord(-1);
        FillChar(List^, BufSize, 0);
        Res := WNetEnumResource(EnumHandle, Entries, List, BufSize);
        if Res = ERROR_MORE_DATA then
        begin
          ReAllocMem(List, BufSize);
        end;
      until Res <> ERROR_MORE_DATA;

      Result := Res = NO_ERROR;
      if not Result then
      begin
        FreeMem(List);
        List := Nil;
        Entries := 0;
      end;
    except
      FreeMem(List);
      raise;
    end;
  finally
    WNetCloseEnum(EnumHandle);
  end;
  end;
end;

procedure ScanNetworkResources(ResourceType, DisplayType: DWord; List: TStrings);

procedure ScanLevel(NetResource: PNetResource);
var
  Entries: DWord;
  NetResourceList: PNetResourceArray;
  i: Integer;
begin
  if CreateNetResourceList(ResourceType, NetResource,
    Entries, NetResourceList) then
  try
    for i := 0 to Integer(Entries) - 1 do
    begin
      if (DisplayType = RESOURCEDISPLAYTYPE_GENERIC) or
       (NetResourceList[i].dwDisplayType = DisplayType) then
      begin
        List.AddObject(NetResourceList[i].lpRemoteName,
            Pointer(NetResourceList[i].dwDisplayType));
      end;
      if (NetResourceList[i].dwUsage and RESOURCEUSAGE_CONTAINER) <> 0 then
        ScanLevel(@NetResourceList[i]);
    end;
  finally
    FreeMem(NetResourceList);
  end;
end;

begin
  ScanLevel(Nil);
end;
Syntax Highlighted with http://delphi-id.org/syntax

Contoh penggunaan nya, tambakan komponen TButton dan TListBox. Pada event OnClick TButton, sisipkan kode berikut :

procedure TForm1.Button1Click(Sender: TObject);
begin
  ScanNetworkResources(RESOURCETYPE_DISK, RESOURCEDISPLAYTYPE_SERVER, ListBox1.Items);
end;
Syntax Highlighted with http://delphi-id.org/syntax

Untuk contoh project, dapat di download di PulicFolder dengan nama ScanKompNet.rar

Turbo Delphi

Posted Wednesday, 13 September 2006 by kakadelphi
Categories: Umum

At Last ….. Branded Borland yang masa kejayaannya dulu di era 90-an, lahir kembali ….

Welcome Back “Turbo” Delphi …. semoga dirimu sejaya zaman dulu …

Lihat sitenya di : http://www.turboexplorer.com/delphi

[B..O..L..O..H..O]

Posted Wednesday, 13 September 2006 by kakadelphi
Categories: Umum

Knapa yach diriku baru nyadar klo diriku punya blog di WP … ? Apa keasyikan dengan blogs diriku yang sekarang …. ? yang sama2 pake engine WP

Betapa bodohnya diriku …. please forgive me ladies and gentlement for all my stupidly …

Image JPG di MySQL

Posted Sunday, 5 March 2006 by kakadelphi
Categories: Tip's n' Trik's

JPG di MySQL ? Why Not :D
Untuk menampilkan data image (*.jpg) ke MySQL, silahkan ikuti langkah berikut :

1. Pertama siapkan database MySQL (saya menggunakan versi 4.0.18) serta tablenya dengan field bertipe BLOB (mau BLOB, MEDIUMBLOB, atau LONGBLOB [asal jangan SpongeBob heheheheee... :D :D :D ]). Untuk langkah ini anda dapat menggunakan skrip berikut :

CREATE TABLE `gambar` ( `id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, `image` LONGBLOB NOT NULL, PRIMARY KEY(`id`)

2. Buat aplikasi dengan komponen yang bisa membuat koneksi ke MySQL (disini saya menggunakan Zeos [bukan promosi lho]). Set koneksinya dan sisipkan komponen Table. Isi Property ‘TableName’ pada komponen Table ke tabel ‘gambar’, dan aktifkan.

3. Tambahkan komponen TDataSource dan set properties ‘DataSet’ – nya ke komponen Table.

4. Tambahkan komponen DBNavigator untuk bernavigasi. Set property VisibleButtons pada nbInsert, nbDelete, nbEdit, nbPost, nbCancel, nbRefresh = false, karena kita disini hanya butuh untuk bernavigasi.

5. Klik ganda pada komponen table, dan klik kanan pada ‘Field List Editor’ dan pilih ‘Add all field’ atau Ctrl+F.

6. Tambahkan komponen TOpenPictureDialog untuk memudahkan dalam pencarian gambar JPG. Aturlah Property ‘Filter’ – nya supaya file yang di support hanya untuk file JPG.

7. Tambahkan komponen TImage dan atur posisi dan propertiesnya sesuai sengan keinginan anda.

8. Tambahkan komponen TButton untuk mengeksekusi TOpenPictureDialog dan set Captionnya dengan ‘Cari Gambar’.

9. Buat fungsi yang akan menyimpan data gambar (*.jpg) ke tabel dengan skrip berikut :
private
{ Private declarations }
procedure TampilkanGambarJPG(img: TImage);
public
{ Public declarations }
end;…

implementation

{$R *.dfm}

uses Jpeg;

procedure TForm1.TampilkanGambarJPG(img: TImage);
var Jpg: TJpegImage;
Ms : TMemoryStream;
begin
Jpg := TJpegImage.Create;
Ms := TMemoryStream.Create;
Table1image.SaveToStream(Ms);
Ms.Position := 0;
Jpg.LoadFromStream(Ms);
{* Tampilkan gambar dr tabel ke Image1 *}
img.Picture.Graphic := Jpg;
Jpg.Free;
Ms.Free;
end;

9. Klik ganda pada komponen TButton dan sisipkan skrip berikut :

if OpenPictureDialog1.Execute then begin Table1.Append; Table1image.LoadFromFile(OpenPictureDialog1.FileName);
Table1.Post;
end;

10.Pada event OnDataChange pada komponen TDataSource, sisipkan fungsi untuk menampilkan gambar yang telah dibuat. Skripnya adalah sebagai berikut :

TampilkanGambarJPG(Image1);

11.Coba aplikasi anda jalankan Apabila anda telah mengikuti langkah-langkah tersebut, maka anda telah berhasil membuat aplikasi yang dapat menyimpan serta menampilkan file gambar JPG dengan menggunakan database MySQL.

Contoh source code dari aplikasi ini, dapat anda donwload di Public Folder dengan nama JPGMySQL.rar. Ingat!!! disini saya memakai komponen Zeos untuk koneksi ke MySQL. Anda dapat menggantinya dengan komponen kesayangan anda.

Hint: Sebenarnya trik tersebut bisa di terapkan pada database apapun, asalkan field dari tabelnya bertipe BLOB.

Sekian untuk tip’s & trik’s kali ini, sampai jumpa lagi di artikel selanjutnya dan Tetap Semangat !!!

Artikel ini pernah dimuat di Forum Delphi Indonesia

Posting pertama ….. :D

Posted Sunday, 5 March 2006 by kakadelphi
Categories: Umum

Wei.. ini posting pertama ku … :D :D :D