Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
DBGrid Detay Gösterilmesi.
#19
Size bir proje hazırladım oradan bakıp sorunun ne olduğunu anlayabilirsiniz.

Tek fark olarak ilk sütunu ifade edecek şekilde Index vererek, 'Btn' olan sütun ismi şartını kaldırdım ki veritabanı sql sorguları olduğu gibi kullanılabilsin.

Kaynak kodlar ve veritabanı bu mesaj ekindedir...

Kaynak kodların açık hali aşağıda verdiğim şekilde

procedure TForm1.BitBtn1Click(Sender: TObject);
const
  LConnStr = 'Provider=Microsoft.Jet.OLEDB.4.0;'
           + 'Data Source=%s;'
           + 'Jet OLEDB:Database Password=%s;';
  LPwd     = '';
var
  LSourceMDB : string;
  i : Integer;
begin
  DBGrid1.Font.Name := 'Courier New';
  DBGrid1.Font.Size := 12;

  LSourceMDB := ExtractFilePath(ParamStr(0)) + 'data\movies.mdb';

  ADOConnection1.LoginPrompt                  := False;
  ADOConnection1.ConnectionString := Format( LConnStr, [LSourceMDB, LPwd] );
  ADOConnection1.Connected                    := True;

  DataSource1.DataSet   := ADOQuery1;
  DBGrid1.DataSource    := DataSource1;
  DBGrid1.Options       := DBGrid1.Options + [dgRowSelect];

  ADOQuery1.SQL.Text    := ''
   + sLineBreak + 'SELECT ''.'' as [*]'
   + sLineBreak + '     , M_Name as [Film Adı]'
   + sLineBreak + '     , M_Year as [Yıl]'
   + sLineBreak + '     , M_Directed as [Yönetmen]'
   + sLineBreak + '     , M_Genre as [Tür]'
   + sLineBreak + '     , LEFT(TRIM(M_Plot_TR), 255) AS [Özet]'
   + sLineBreak + 'FROM [Movies]';
  ADOQuery1.Connection  := ADOConnection1;
  ADOQuery1.Active      := true;

  for i := 0 to DBGrid1.Columns.Count-1
    do
      if DBGrid1.Columns[i].Width > 255
        then
          DBGrid1.Columns[i].Width := 255;

  DBGrid1.Columns[0].Width := BitBtn2.Width;
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
var
  LRecord : String;
begin

  LRecord := '';
  if (DBGrid1.DataSource = nil) then exit;

  With DBGrid1.DataSource.DataSet do
    if  (Active   )
    AND (RecNo > 0)
    then
      LRecord := Format(  'Film "%s" (%s)'  + sLineBreak
                        + 'Yönetmen "%s"'   + sLineBreak
                        + '%s' + sLineBreak + sLineBreak
                        + '%s',
        [
          FieldByName('Film Adı').AsString
         ,FieldByName('Yıl').AsString
         ,FieldByName('Yönetmen').AsString
         ,FieldByName('Tür').AsString
         ,trim( FieldByName('Özet').AsString )
        ]);

  if LRecord = '' then exit;

  MessageDlg( LRecord, TMsgDlgType.mtInformation, [TMsgDlgBtn.mbOk], 0 );
  DBGrid1.SetFocus;

end;

procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
  Field: TField; State: TGridDrawState);
var
  LMoveControl : TControl;
begin
 // Buton için uygun column/field hangisisye oraya odaklanacağız...
 LMoveControl := BitBtn2;

 if ( Field.FieldNo = 1 ) then
 begin
   if ( Field.DataSet.RecordCount > 0 ) then
   begin
     // Kayıt Seçili ve Odaklı ise Butonu yerleştir.
     If ( (gdSelected in State) or (gdFocused in State) ) then
     begin
       LMoveControl.Height  := Rect.Bottom-Rect.Top +2;
       LMoveControl.Width   := Rect.Right -Rect.Left;
       LMoveControl.Left    := Rect.Left  + tDBGrid(Sender).Left + 1;
       LMoveControl.Top     := Rect.Top   + tDBGrid(Sender).Top;
       LMoveControl.Visible := True;
       LMoveControl.BringToFront;
     end;
   end;
 end;
end;



w1d7jg7xdy4kxa2vqqyc.gif


Ek Dosyalar
.zip   VCL_MoveButtonToRecord_Sample.zip (Dosya Boyutu: 514,93 KB / İndirme Sayısı: 24)
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla


Bu Konudaki Yorumlar
DBGrid Detay Gösterilmesi. - Yazar: OZCANK - 12-04-2019, Saat: 04:49
Cvp: DBGrid Detay Gösterilmesi. - Yazar: FiRewaLL - 12-04-2019, Saat: 08:43
DBGrid Detay Gösterilmesi. - Yazar: mrmarman - 12-04-2019, Saat: 08:53
DBGrid Detay Gösterilmesi. - Yazar: emrgln - 12-04-2019, Saat: 09:16
DBGrid Detay Gösterilmesi. - Yazar: mrmarman - 12-04-2019, Saat: 09:32
DBGrid Detay Gösterilmesi. - Yazar: adelphiforumz - 12-04-2019, Saat: 09:44
DBGrid Detay Gösterilmesi. - Yazar: mcuyan - 12-04-2019, Saat: 12:13
DBGrid Detay Gösterilmesi. - Yazar: mrmarman - 12-04-2019, Saat: 12:27
Cvp: DBGrid Detay Gösterilmesi. - Yazar: Pimapen_Nuri - 20-03-2024, Saat: 03:49
DBGrid Detay Gösterilmesi. - Yazar: FiRewaLL - 12-04-2019, Saat: 18:31
Cvp: DBGrid Detay Gösterilmesi. - Yazar: OZCANK - 15-04-2019, Saat: 06:50
DBGrid Detay Gösterilmesi. - Yazar: mrmarman - 20-03-2024, Saat: 20:10
Cvp: DBGrid Detay Gösterilmesi. - Yazar: Pimapen_Nuri - 01-04-2024, Saat: 04:48
DBGrid Detay Gösterilmesi. - Yazar: engerex - 01-04-2024, Saat: 07:57
DBGrid Detay Gösterilmesi. - Yazar: Pimapen_Nuri - 02-04-2024, Saat: 02:50
DBGrid Detay Gösterilmesi. - Yazar: frmman - 02-04-2024, Saat: 09:18
DBGrid Detay Gösterilmesi. - Yazar: mrmarman - 02-04-2024, Saat: 18:45
DBGrid Detay Gösterilmesi. - Yazar: Pimapen_Nuri - 04-04-2024, Saat: 04:04
DBGrid Detay Gösterilmesi. - Yazar: mrmarman - 04-04-2024, Saat: 12:30
DBGrid Detay Gösterilmesi. - Yazar: Pimapen_Nuri - 05-04-2024, Saat: 00:48

Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  DBGrid Columns Otomatik Boyutlandırma Halil Han BADEM 8 8.169 23-01-2025, Saat: 14:51
Son Yorum: OZCANK
  dbgrid sutun toplamini alip lazreport da gostermek sadikacar60 6 1.073 02-12-2024, Saat: 12:21
Son Yorum: sadikacar60
  DbGrid'de Seçili Satırların Fast Reportta Raporlanması [ÇÖZÜLDÜ] bünyamin68 4 1.714 17-12-2023, Saat: 15:08
Son Yorum: bünyamin68
  DBGRID Otomatik Sıra No Alanı [ÇÖZÜLDÜ] bünyamin68 2 1.279 18-10-2023, Saat: 21:00
Son Yorum: bünyamin68
  DbGrid tüm satırların yüksekliğini ayarlama delphicim 2 983 16-10-2023, Saat: 23:06
Son Yorum: delphicim



Konuyu Okuyanlar: 1 Ziyaretçi