Menggunakan Header Control Pada DBGrid

Malas membaca? Langsung Download Source Code + Exe.

image

Posting ini buat menjawab pertanyaan seorang rekan Delphier.

FixedRow pada DBGrid default bawaan Delphi memang terlihat membosankan. Nah kita coba membuat tampilan yang lebih menarik.

Langkah-Langkahnya:

  1. Buat Form baru. Tambahkan sebuah panel (page Standard) dan kosongkan property Caption.
    image
  2. Tambahkan sebuah Header Control (page Win32) ke dalam panel tersebut. Set property Height menjadi 25, property Cursor menjadi crHandPoint, dan property Style menjadi hsButtons. Tambahkan juga sebuah ImageList (page Win32) ke form.
    image 
    Klik ganda ImageList1, tambahkan beberapa gambar berukuran 16 x 16 pixel.
    image
  3. Kini Tambahkan sebuah DBGrid (page Data Controls) ke dalam Panel1. Set property Align ke alClient.
    image 
    Lihat property Options milik DBGrid1, set property dgTitles ke False:
    image 
    dan hasilnya, tampilan form sekarang menjadi:
    image 
  4. Klik ganda pada DBGrid, tambahkan Column sesuai kebutuhan.
    image
    Klik ganda juga pada HeaderControl1, tambahkan Section  sesuai kebutuhan.
    image
    Atur property Width untuk tiap Column pada DBGrid1, sesuaikan dengan property Width untuk tiap Section pada HeaderControl1.
     image
  5. Set property Images milik HeaderControl1 ke ImageList1. Kemudian klik ganda HeaderControl1. Klik salah satu Section dan atur property ImageIndex dengan gambar yang sesuai:
    image
    Lakukan dengan Section yang lain.
  6. Klik pada HeaderControl1 dan klik tab Events pada Object Inspector. Klik ganda pada event OnSectionClick:
    image
    Masukkan kode seperti berikut:
  7. procedure TForm1.HeaderControl1SectionClick(HeaderControl: THeaderControl;
      Section: THeaderSection);
    begin
      ShowMessage(‘Anda mengklik pada: ‘+ Section.Text);
    end;

  8. Jalankan program.
    image

Bagaimana? Menarik?
Selanjutnya tinggal mengatur DataSource dan Dataset untuk DBGrid buat menampilkan data dari database. Selamat melanjutkan.

Berikut referensi yang mungkin membantu Anda:

Download Source Code + Exe โ€“ [ 347 KB ]

File ini sesungguhnya adalah file .zip. Jadi setelah didownload harus diganti ekstensi filenya dari .ppt ke .zip. Jangan lupa discan dulu sebelum diekstrak.

62 thoughts on “Menggunakan Header Control Pada DBGrid

      • mas,mau tanya nih…aku sedang buat database menggunakan mysql 5 server. database ku itu tak hubungkan ke delphi menggunakan komponen zeos access.trus yang tak bingungin itu,bagaimana cara nyimpan record data menggunakan komponen tconnection pada zeos komponen…
        yang kedua, bagaimana caranya untuk mengakses database mysql jika aku menggunakan 2 komputer,yang mana kmputer satu sebagai server dan komputer kedua sebagai client???
        mohon bantuannya ya….

      • makasih ya mas atas pencerahannya…oy mau tanya lagi nie,,,
        pertama : klu mau buat database client server trus databasenya itu di server,,yang bagian client supaya bisa ngakses database server apa aja yang harus disetting..mohon pencerahannya untuk bagian ini..
        kedua : database yang udah aku buat mau tak tambahin searching by tanggal,tu caranya gimana ya mas??bingung nie…

      • mas,mau tanya nih..
        aku udah buat aplikasi client-server menggunakan mysql 5. trus pada bagian client,
        aku mengakses data dari server dan tak tampilkan pada dbgrid.
        yang pengen aku tanyakan itu adalah:
        1. pada bagian client apakah data pada dbgrid bisa aku tampilkan pada edit text?
        2. kalau bisa caranya gimana mas?
        terima kasih…

      • @Baguse:
        Select * from tabel where tanggal between ‘2010-01-01’ and ‘2010-01-31’
        akan menampilkan data dengan field tanggal pada rentang 1 Jan 2010 sampe 31 Jan 2010.

        @Wawan:
        Bisa, gunakan DBEdit (pada kelompok Data Controls), set properti FieldName dan DataSourcenya ke objek yang sesuai…

      • @Wawan:
        Bisa, gunakan DBEdit (pada kelompok Data Controls), set properti FieldName dan DataSourcenya ke objek yang sesuaiโ€ฆ

        Sorry, bukan FieldName tapi DataField….๐Ÿ™‚๐Ÿ™‚๐Ÿ™‚

      • terima kasih mas..
        mau tanya lagi neh mas…

        misal gini:
        IP SERVER : 192.168.2.1
        IP CLIET 1 :192.168.2.3
        IP CLIENT 2:192.168.2.4

        Nah, dimisalkan server udah aktif. kemudian ketika client 1 connect ke server muncul pesan “koneksi berhasil ke IP 192.168.2.1”. Dan client 2 ketika melakukan koneksi ke server juga muncul pesan “koneksi berhasil ke IP 192.168.2.1″. Pesan itu muncul ketika client 1 dan client 2 berhasil connect ke server. Ketika koneksi gagal juga bisa muncul pesan ” koneksi gagal ke IP 192.168.2.1″.
        Di bagian server juga muncul pesan ” koneksi berhasil ke IP 192.168.2.3 โ€œ dan “koneksi berhasil ke IP 192.168.2.4 โ€œ ketika ada client yang mengakses server. Aku menggunakan MySQL SERVER 5 dan komponen Zeos access pada delphi..Nah cara memunculkan tulisan itu gimana ya mas???…

      • Anda dapat memanfaatkan event-event yang tersedia pada ZConnection:

        procedure TForm1.ZConnection1AfterConnect(Sender: TObject);
        begin
          edit1.text:='Koneksi ke ' + ZConnection1.HostName +': berhasil...';
        end;
        procedure TForm1.ZConnection1BeforeReconnect(Sender: TObject);
        begin
          edit1.text:='Koneksi ke ' + ZConnection1.HostName +': gagal/terputus...';
        end;
        procedure TForm1.ZConnection1AfterDisconnect(Sender: TObject);
        begin
          edit1.text:='Koneksi ke ' + ZConnection1.HostName +': Terputus...';
        end;
        

        Untuk memantau user/Client lain, gunakan prosedur berikut:

        procedure EnumActiveConnections(Connection: TZConnection;  AList: TStringList);
        var
          Qr: TZQuery;
          User, Host: String;
        begin
          AList.Clear;
          if not Connection.Connected then
          begin
            Alist.add('Anda tidak terkoneksi ke server...');
            exit;
          end;
          qr:=TZQuery.Create(nil);
          Qr.Connection:=Connection;
          qr.SQL.Text:='show processlist';
          try
            qr.Open;
            if Qr.Active then
            begin
              Qr.First;
              while not Qr.Eof do
              begin
                user:=qr['User'];
                Host:=qr['Host'];
                Host:=copy(Host,1 , Pos(':', Host)-1);
                AList.Add('User '+ User+'@'+Host+' sedang terkoneksi ke server...');
                Qr.Next;
              end;
              Qr.Close;
            end;
          finally
            qr.Free;
          end;
        end;
        

        Dan digunakan:

        procedure TForm1.Button2Click(Sender: TObject);
        begin
          EnumActiveConnections(ZConnection1, TStringList( memo1.Lines ));
        end;
        
      • mas,prosedure di atas udah tak coba,tapi yang bagian server kug ga muncul pesan atau peringatan ketika ada client yang mengakses server ya..
        kalau misallkan client dengan IP 192.168.2.3 mengakses server,maka pada bagian server muncul pesan ” Client dengan IP 192.168.2.3 tersambung dengan server” itu bagaimana ya mas??

        trus sekalian mo tanya lagi mas..he…he…
        misalkan aku punya database dengan field sebagai berikut ini:
        hari, tanggal, suhu. ketika button1 tak pilih maka hanya hari yang tampil pada dbgrid, kemudian ketika button2 tak pilih maka hanya suhu yang tampil pada dbgrid, dan ketika button3 tak pilih maka hari dan suhu tampil pada dbgrid. dan ketika button4 tak pilih maka semua data muncul pada dbgrid. contoh prosedure filter datanya gimana ya mas??aku menggunakan database mysql dan delphi.

      • mas, mau tanya lagi neh…
        1. aku mempunyai nilai dalam format float (misalkan sebesar 122,5864235) dan tak tampilkan pada edit text. nah, supaya nilai yang tampil pada edit text itu hanya 2 angka dibelakang
        tanda koma itu caranya bagaimana mas? (dari nilai 122,5864235 supaya menjadi 122,58).
        2. konversi nilai float ke integer bisa apa tidak ya mas?

      • Untuk mengambil hanya angka bulat dan dua angka di belakang koma, bisa menggunakan kode seperti berikut. Angka di belakang kom akan dibulatkan dalam dua angka saja.

        procedure TForm1.Button5Click(Sender: TObject);
        var
          pecah: Double;
        begin
          pecah:=122.5864235;
          edit1.Text:= FormatFloat('#,#.00', pecah);
          //edit1.text -> 122.59
        end;
        

        Sedang untuk mengubah bilangan real ke integer (membuang angka desimalnya):

        procedure TForm1.Button5Click(Sender: TObject);
        var
          Bulat: integer;
          Pecahan: double;
        begin
          pecahan:=12345.6789;
          Bulat:=trunc(Pecahan);
          //Bulat -> 12345
        end;
        
      • @WAWAN:
        Server mysql kagak bisa nampilin informasi gitu, Mas.
        Caranya kita musti bikin program sendiri sebagai MySQL Server Monitor, yang menjalankan prosedur di atas๐Ÿ™‚

        Trus untuk tampil di grid sesuai kolom yang dipilih, tampilin aja semuanya dulu. Trus dengan prosedur berikut,

        procedure ShowGridColumn(AGrid: TDBgrid; AColumnIndexes: Array Of Integer);
        var
          i,j: Integer;
        begin
          for i:=0 to AGrid.Columns.Count -1 do
            AGrid.Columns[i].Visible:=False;
          for i:=0 to Length(AColumnIndexes) -1 do
          begin
            j:=acolumnIndexes[i];
            if (j<=AGrid.Columns.Count)
            and (j>0) then
              AGrid.Columns[j-1].Visible:=True;
          end;
        end;
        
        //Contoh pemakaian
        //Tampil kolom pertama (Column 0)
        procedure TForm1.Button1Click(Sender: TObject);
        begin
          ShowGridColumn(DBGrid1, [1]);
        end;
        
        //Tampil kolom keempat (Column 3)
        procedure TForm1.Button2Click(Sender: TObject);
        begin
          ShowGridColumn(DBGrid1, [4]);
        end;
        
        //Tampil kolom pertama dan ketiga (Column 0 & 2)
        procedure TForm1.Button3Click(Sender: TObject);
        begin
          ShowGridColumn(DBGrid1, [1, 3]);
        end;
        
      • terima kasih banyak mas udah diberi penjelasan2nya..
        oy,,kapan – kapan buat artikel tentang fungsi komponen Tclientserversocket dong mas…he..he..

      • mas,mau tanya lagi neh…kalau cara copy file database mysql itu gmna ya?
        filenya udah tak copy, tapi waktu tak buka di komputer lain kug ga bisa, padahal service mysql server udah tak matikan waktu aku copy file databasenya tesebut..

      • Database mysql, bila tabel-tabelnya MyIsam, maka dapat dikopi foldernya saja. Sedangkan yang InnoDB, hanya struktur yang tersimpan dalam folder database, sedangkan datanya, index, dan lain-lainnya disimpan dalam InnoDB Table Space, di dalam folder %MYSQL%\Data. InnoDB Table Space ini berbentuk file dan memiliki nama:
        ……….
        ibdata1
        ib_logfile0
        ib_logfile1
        ……….
        dan file ini tidak dapat dokopi, karena beberapa tabel dari database berbeda disimpan bersama-sama di dalamnya.
        Saran saya, gunakan fasilitas ekspor ke file *.sql dan kemudian dieksekusi di MySQL Server tujuan.
        Salah satu tool yang saya gunakan, yaitu Navicat For MySQL, memiliki fasilitas Dump SQL File untuk mengekspor database ke file SQL dan Execute Batch File untuk mengembalikannya ke database.

        HTH๐Ÿ™‚

  1. ๐Ÿ™‚
    hati2 banjir boss.
    Mo nanya lagi neh boss.
    Sy membuat procedure sorting pada event DBGrid.onTitleClick,
    sy buat juga procedure ColumnWidthAutofit pada event DBGrid.onDoubleclick (khusus pd title-nya).
    Pada saat eksekusi, result-nya kurang memuaskan karena pada saat doubleclick, event titleclick uga ikut tereksekusi.
    Sy sedang mengakalinya dengan cara procedure ColumnWidthAutofit pd DblClick dieksekusi pada saat cursor dlm state crHSplit. But gagal maning, gagal maning.:)
    Mohon boss, Agar kita dapat mengatur lebar kolom DBGrid fit dengan lebar data dl cell-nya pada saat doubleclick diantara dua kolom (cursor crHsplit)?

    kira-kira gitu, pertanyaan sy (jelas kali yaaa๐Ÿ™‚ )
    viva delphi

  2. Hahahaha…๐Ÿ™‚
    Kalau saya mah gak cek jenis kursor. Langsung aja untuk TitleClick:

    procedure TForm1.DBGrid1TitleClick(Column: TColumn);
    begin
      ShowMessage('Title click.');
    end;
    

    Kan dah ok tuh. Tinggal yang doubleclick, saya tetap pake event OnDoubleClick, hanya dengan memeriksa posisi mouse, jika berada dalam area DBGrid1.Title, baru dieksekusi kodenya:

    procedure TForm1.DBGrid1DblClick(Sender: TObject);
    var
      pt: TPoint;
      TinggiCap: Integer;
    begin
      //Ambil tinggi Caption Form
      {
        Karena GetCursorPos().Y terhitung dengan Form.Top + TinggiCaption
        SedangkanDBGrid1.Top langsung dihitung dari Form.Top
      }
      TinggiCap:=GetSystemMetrics(SM_CYCAPTION);
      GetCursorPos(pt);
      pt.x:=pt.x - Self.Left ;
      pt.y:=pt.Y - Self.top - TinggiCap;
      {
        Tinggi Title DBGrid Default adalah 18px, jadi kita tambahkan angka ini
        ke dalam perhitungan.
      }
      if (pt.Y &amp;gt;= DBGrid1.top) and (pt.Y &amp;lt;= (DBGrid1.top+18)) then
        ShowMessage('Splitter click.')
    end;
    

    hasil kedua event di atas:

    Lebih jelasnya, saya sertakan contohnya di sini:
    Download contoh ( exe demo included ) – sorry bos, pake iklan, wkwkwkw….๐Ÿ™‚
    Habis download, ganti ekstensi file dari .ppt ke .zip lalu diekstrak.

    • Oh ya sy jg ada Code yg lebih sederhana

      procedure TForm1.DBGrid1TitleClick(Column: TColumn);
      begin
      ShowMessage(‘Title Clicked’);
      end;

      procedure TForm1.DBGrid1DblClick(Sender: TObject);
      var
      CurInGrid:TPoint;
      GridCoord:TgridCoord;
      begin
      CurInGrid := DBGrid1.ScreenToClient(Mouse.CursorPos);
      GridCoord := DBGrid1.MouseCoord(CurInGrid.X, CurInGrid.Y);
      //Title Grid un visible
      if not (dgTitles in DBGrid1.Options) then Exit;

      if GridCoord.Y = 0 then
      showmessage(‘Splitter Clicked’);
      end;

      selengkapnya (http://delphi.about.com/od/usedbvcl/a/dbgrid_autofit.htm)

      tapi masalahnya sama pada saat event Dblclick dieksekusi event TitleClick Juga ikut tereksekusi.๐Ÿ™‚

  3. Terima ksih banyak atas ilmunya.๐Ÿ™‚

    Tapi bagaimana jika kita sedikit modofikasi dengan menambahkan dua buah Label menggantikan function showmessage pada kedua event handle tsb,

    Label1 digunakan untuk informasi event Titleclick sebagai berikut:
    procedure Form1.DBGrd1.Titleclick(column:TColumn);
    begin
    Label1.Caption:=’Title Clicked.’;
    end;

    Label2 digunakan untuk informasi event DoubleClick sebagai berikut:
    procedure TForm1.DBGrid1DblClick(Sender: TObject);
    var
    pt: TPoint;
    TinggiCap: Integer;
    begin
    //Ambil tinggi Caption Form
    {
    Karena GetCursorPos().Y terhitung dengan Form.Top + TinggiCaption
    SedangkanDBGrid1.Top langsung dihitung dari Form.Top
    }
    TinggiCap:=GetSystemMetrics(SM_CYCAPTION);
    GetCursorPos(pt);
    pt.x:=pt.x – Self.Left ;
    pt.y:=pt.Y – Self.top – TinggiCap;
    {
    Tinggi Title DBGrid Default adalah 18px, jadi kita tambahkan angka ini
    ke dalam perhitungan.
    }
    if (pt.Y >= DBGrid1.top) and (pt.Y <= (DBGrid1.top+18)) then
    Label2.Caption:='Double Clicked on Column Split.';
    end;

    //—-
    berdasarkan eksperimen yang saya lakukan ternyata:
    1. pada saat event Titleclick dijalankan, event Dblclick tidak ikut dijalankan.
    2. pada saat event Dblclick dijalankan, event TitleClick ikut dijalankan.

    dan nomor 2 inilah yang menjadi masalah saya. Gitu boss

  4. mas, tanya sedikit, tentang zeos di delphi,, jika kita meletakkan tzconnection nya di data module dan tzquery nya di form lain. saya sudah tambahkan uses datamodulnya. dan zquery nya sudah saya hubungkan dengan zconenction di data module tetapi begitu di compile dan di jalankan kenapa eror (“zconnection requered in form”). jadi zquerynya tidak terhubung..tolong caranya mas…?
    terimakasih.

  5. Lihat di Project Properties (Tekan Ctrl+Shift+F11). Klik Tab Forms. Pastikan Data Module berada di Auto-Create Forms, dan paling atas dari form-form lain yang membutuhkannya.

    Saran saya, jika aplikasi Anda adalah MDI (Multiple Documents Interface), maka taruhlah ZConnection di Form utama (MDIForm).
    Penggunaan Datamodule tidak saya sarankan karena biasa membingungkan di tengah pengerjaan.

  6. Boleh lah bagi-bagi hal-hal yang membingungkan apa saja?๐Ÿ™‚

    Menurut saya (sementara ini๐Ÿ™‚ ) pake datamodule malah memudahkan pengorganisasian dataset. bayangkan jika ada sekian form memakai dataset yang sama, jika akan merubah propertinya harus mengubah satu persatu, betul gak ya…?

    • Hal yang membingungkan? Contohnya pada pertanyaan Vierm_186 di atas๐Ÿ™‚
      BTW, organisasi dataset dapat ditaruh di Form Utama. Anda dapat memilih yang terbaik. Kalau saya sih, tanpa DataModule malah lebih baik.
      Sebuah MDI Form harus selalu pertamakali di-create. Bagaimana jika MDIForm butuh koneksi database (misalnya untuk loading menu), tapi DataModule belum di-create? Harus manual DataModule1:=TDataModule.create()? Repot…

      • mas, tapi saya sudah membuat aplikasi saya dengan datamodule dan hampir jadi klo saya harus meletakkan semua zquery,ztabel, dan data source ke mdi form, berarti harus mengganti secript yang mengarah ke datamodule menjadi ke mdiform, dan itu banyaaak, ada saran gak mas,,.. untuk menjembataninya

      • caranya, Lihat di Project Properties (Ctrl + F11). Pastikan bahwa Datamodule berada di Auto-Create Forms. Dan berada paling atas dari semua form yang membutuhkan akses ke database. Ini untuk memastikan bahwa ZConnection sudah eksis di memory sebelum ZTable dan akses database lainnya melakukan koneksi ke ZConnection.
        HTH๐Ÿ™‚

      • itu sudah saya lakukan mas, tapi muncul permasalahan baru, terdapat beberapa form yan ada component advdblookupcombobox (dari TMS), tidak bisa dropdown dikarenakan datamodulnya diatas form tersebut. jadi form tersebut harus diatas datamodul baru component tersebut bisa berfungsi, nah pertanyaannya.
        jika form-form yang mempunyai component itu berada di atas datamodule dan form-form yang lain (tidak menggunakan component advdblookupcombobox) berada dibawah datamodule, apakah nantinya applikasi saya stabil dan tidak mengalami masalah,
        terimakasih lagi sebelumnya mas.

      • Justru datamodule harus di atas form yg menggunakan TAdvDbLookupComboBox. Kenapa? TAdvDbLookupComboBox kan mengambil data dari DataSource, di mana DataSource mengambil data dari DataSet. DataSet kan di DataModule. Bila DataModule berada di bawah Form yang menggunakan TAdvDbLookupComboBox, maka saat TAdvDbLookupComboBox mau didropdown, permintaan data ke Dataset menjadi tidak mungkin karena DataSet belum dibuat dalam memori. Bila Anda jeli, akan ketahuan di mana letak kesalahan sebenarnya. Saya tidak dapat membantu banyak, karena tidak punya source codenya.

  7. //—————
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    with TDBGrid.Create(self) do begin
    Top:=0;
    Left:=0;
    Width:=200;
    Height:=200;
    DataSource:=Datasource1;
    Color:=clWindow;
    ParentColor:=False;
    Options:=[dgEditing, dgTitles, dgIndicator, dgColumnResize,
    dgColLines, dgRowLines, dgTabs, dgConfirmDelete, dgCancelOnExit];
    DefaultDrawing:=True;
    Show;
    Visible:=true;
    end;
    end;
    //————————————-

    Kenapa ya Gridnya gak visible/show pd form1?

    • Tambahkan Parent:=Self;
      agar dbgridnya nongol di form

      procedure TForm1.Button1Click(Sender: TObject);
      begin
        with TDBGrid.Create(self) do begin
          Top:=0;
          Left:=0;
          Width:=200;
          Height:=200;
          Parent:=self;
          DataSource:=Datasource1;
          Color:=clWindow;
          ParentColor:=False;
          Options:=[dgEditing, dgTitles, dgIndicator, dgColumnResize,
            dgColLines, dgRowLines, dgTabs, dgConfirmDelete, dgCancelOnExit];
          DefaultDrawing:=True;
          Show;
          Visible:=true;
        end;
      end;
      
  8. ups parent-nya to.๐Ÿ™‚

    Boss, Editor D5 sy ngadat neh. Code Auto completion-nya gak mau nongol,
    padahal: Tools->Editor Options->Code Insight->Automatic Features
    sudah sy centang semuanya.
    Gmana ya solusinya boss.

  9. Boss disini agak mendung nih jadi mohon pencerahannya donk.๐Ÿ™‚
    sy baru belajar modifikasi component, tapi basic oop sy msh level bawah๐Ÿ™‚.
    sy ingin menambahkan property SortType pada TDBGrid.TColumn-nya.
    gmana ya caranya?

      • Karena MySQL servernya tidak mendukung boolean, dan SMDBGrid kaga dukung Int(1) sebagai boolean, maka satu-satunya jalan untuk menampilkan data int(1) sebagai boolean adalah dengan membuat Defined Field baru pada Dataset terkait.
        Misalkan field lama adalah Checked, maka kita buat defined field baru dengan nama TelahDicek
        Field bari ini diset bertipe Boolean, field type Calculated dan diberi namanya “TelahDicek”.
        Kembali ke dataset, beri kode pada event OnCalcFields:

        procedure TForm1.ZTable1CalcFields(DataSet: TDataSet);
        begin
          DataSet['TelahDicek']:=boolean(DataSet['Checked']);
        end;
        

        Trus, column pada SMDBGrid yang tadinya ber-field ke Checked diubah ke TelahDicek. Nongol dah….๐Ÿ™‚

        Tapi tunggu dulu, field TelahDicek ini Read-Only, artinya Anda kagak bisa klik-klak pada chekbox pada grid…..๐Ÿ˜ฆ

        Bila ingin yang OK, coba gunakan TDBGridEh dari http://www.ehlib.com.
        Saya sudah gunakan grid ini dan bekerja dengan baik pada int(1) -> [1|0] sebagai boolean….๐Ÿ™‚

      • ya sy jg sudah coba buat Defined Field seperti itu, memang betul datanya cuma visual doang gak bisa di chack-check-chock๐Ÿ˜ฆ

        EhLib?
        yup! its work properly on tinyint[1].

        tapi sayang mas ehlib-nya eval ya, terus gak ada sourcenya jd gak bisa dipelajari๐Ÿ™‚

        any other suggestion?
        ๐Ÿ™‚ wah baru makan roti sepotong aja sdh any-any an, namanya juga belajar๐Ÿ™‚

      • @Ade:
        Itu berarti download pake Firefox atau Chrome atau keluarganya.
        File aslinya ekstensinya adalah .ppt. Saat telah didownload, harus diganti jadi .zip
        Ekstensi .part berarti download belum selesai. Saat selesai, file .part akan diganti menjadi .ppt oleh Firefox/Chrome๐Ÿ™‚

      • Mas Joko, sy sdh install EHlibnya and success!

        pas sy coba2 program demo bawaannya. pada saat kita dropdown filter listnya tdk ada checkboxnya. sementara pada demo yg sudah dikompilasi ada. apa memang seperti itu atau bagaimana solusinya?

        trims mas joko.๐Ÿ™‚

      • maksudnya Row tambahan (STFilter) di bagian atas grid?
        Coba baca kembali manualnya, tidak semua koneksi database didukung untuk fungsi ini…

    • Boss sy mo nanya soal Windows neh

      Gini bos, sy mo install ulang D2007 dan Google scethcup tapi gagal terus.
      untuk masalah “invalid serial number” -nya D2007 sdh bisa sy atasi.

      tapi teta gagal pesan errornya sbb:
      xxxxxxxxxxxxx installation failed: “The Windows Installer Service could not be accessed. This can occur if you are running Windowsin safe mode, or if the Windows Installer is not correctly installed. Contact your support personnel for assstance”. Please check your setting and try again.

      gitu boss

      note: Windows Xp Sp3

  10. budi,
    mas mau tanya bagaimana mengetahui letak posisi baris berapa dan kolom berapa di dbgrid,jadi seperti di excel A3 (Kolom A baris 3)

  11. Mas Joko sy mohon izin sedikit share.

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    Caption:=
    ‘Row: ‘+ inttostr(DbGrid1.DataSource.DataSet.RecNo) +
    ‘ | Col: ‘ + inttostr(DBGrid1.SelectedField.Index+1);
    end;

  12. budi
    ok thanks jawabannya.
    tapi begini maslah utamanya adalah saya menggunakan salah satu komponen tambahan kepunyaan devexpress dan jika pada salah satu cell(kolom dan baris yg dipilih) saya mau nampilkan combobox dibawah komponen grid bawaan(tcxgrid) devexpress tersebut nama comboboxnya (tcxlookupcombobox). jadi saran mas ade lumayan ngerti tapi tidak mau di grid tersebut,jadi klo boleh minta tolong bantuaanya tidak usah pakai button tapi pada saat posisi cursor pada grid berpindah maka akan muncul pesan anda pada grid cell A3(baris3 dan kolom A).atau script lsg jika kita berpindah posisi letak cursor maka combobox tersebut muncul dibawah grid cell tersebut. sekali lagi terima kasih bantuaanya

    • Mas joko mohon izin lagi untuk share๐Ÿ™‚
      untuk mengetahu posisi cell pada saat cursor pindah:
      code diatas tinggal dipindah ke event onDrawColumnCell-nya DBGrid, dengan memeriksa focus,sbb:

      procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
      begin
      if(gdfocused in state) then
      begin
      caption:=
      ‘Cell [ ‘+
      inttostr(DBGrid1.DataSource.DataSet.RecNo)+’ | ‘+
      inttostr(DBGrid1.SelectedIndex+1)+’ ]’
      end;
      end;

      semoga membantu.

      terima kasih mas Joko๐Ÿ™‚

      • Makasih buat Mas Ade๐Ÿ™‚
        Btw, Mas Budi…

        Saat design-time, klik TCxDBGrid, dan di sudut kanan bawahnya ada dua tab:
        1. cxGrid1Level1
        2. cxGrid1DBTableView1

        Klik tab yang kedua, cxGrid1DBTableView1. Trus di Object Inspector klik tab Events, cari event “OnCellClick” dan klik dobel. Masukkan kode seperti berikut (silahkan dimodifikasi seperlunya):

        procedure TForm2.cxGrid1DBTableView1CellClick(Sender: TcxCustomGridTableView;
          ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
          AShift: TShiftState; var AHandled: Boolean);
        var
          R: Trect;
        begin
          R:=ACellViewInfo.Bounds;
          cxDBLookupComboBox1.BringToFront;
          with R do
          begin
            Left:=Left+cxGrid1.Left;
            Top:=Top+(Bottom-Top)+cxGrid1.Top;
            Right:=Right+cxGrid1.Left;
            Bottom:=Bottom+(Bottom-Top)+ cxGrid1.Top;
            cxDBLookupComboBox1.SetBounds(Left, Top,Right-Left, Bottom-Top);
          end;
        end;
        
  13. Mas Sy Mo nanya soal windows neh

    Saya mo install ulang D2007 dan G Scethup Tapi selalu gagal dengan pesan error:
    xxxxxx instalation failed:”The Windows Installer Service could not be accessed. This can occur if you are running Windows in safe mode, or if the Windows Installer is not correctly installed. contact your support personnel for assistance”. please check your settings and try again.

    gitu mas gmana solusinya?

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s