14-10-2020, Saat: 21:51
(14-10-2020, Saat: 15:40)wiseman Adlı Kullanıcıdan Alıntı: Tekrar selamlar
Öncelikle benim böyle birşeye ihtiyacım olmadığı için örnekleme yapmamıştır. Ancak kendimi sizin yerinize koydum. Yapmam gereken şey hemen internetten birkaç kelime sorgulamak oldu.
"delphi stringgrid cells text"
"delphi stringgrid find text"
bu iki cümle ile dünyanın örneği çıktı karşıma. Bu örnekleri isteğime göre değiştirerek düzenledim. 1 saatimi aldı ama, sonra bir bakmışım ki, sorunum çözülmüş. Sizlerin de, öncelikle bu yöntemleri kullanarak başlamanız çok daha uygun olacaktır.
Form üzerine 2 tane stringgrid koyun. 1 tane de buton.
Kodları şu şekilde vereyim.
unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Grids, Vcl.StdCtrls; type TForm1 = class(TForm) StringGrid1: TStringGrid; StringGrid2: TStringGrid; Button1: TButton; procedure Button1Click(Sender: TObject); procedure StringGrid1DblClick(Sender: TObject); procedure StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean); private { Private declarations } public { Public declarations } end; var Form1: TForm1; kiraciadi: string; daireno: string; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin StringGrid1.Cells[1,0]:='Kiracı'; StringGrid1.Cells[2,0]:='Daireno'; StringGrid1.Cells[1,1]:='Ali'; StringGrid1.Cells[1,2]:='Veli'; StringGrid1.Cells[1,3]:='Hasan'; StringGrid2.Cells[1,1]:='Ali'; StringGrid2.Cells[1,2]:='Veli'; StringGrid2.Cells[1,3]:='Hasan'; StringGrid1.Cells[2,1]:='1'; StringGrid1.Cells[2,2]:='2'; StringGrid1.Cells[2,3]:='3'; StringGrid2.Cells[1,0]:='Kiracı'; StringGrid2.Cells[2,0]:='Daireno'; end; procedure TForm1.StringGrid1DblClick(Sender: TObject); var I: Integer; J: Integer; isFound: Boolean; FndRect: TRect; begin for I := 1 to StringGrid2.ColCount-1 do for J := 1 to StringGrid2.RowCount-1 do if (StringGrid2.Cells[I,J] = kiraciadi) then begin FndRect:= StringGrid2.CellRect(I,J); StringGrid2.Canvas.Brush.Color:= clNavy; StringGrid2.Canvas.FillRect(FndRect); StringGrid2.Canvas.Font.Color:= clWhite; StringGrid2.Canvas.TextOut(FndRect.Left + 3, FndRect.Top + 3, kiraciadi); StringGrid2.Cells[I+1,J] := daireno; end; end; procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean); begin kiraciadi:= StringGrid1.Cells[ACol,ARow]; daireno:= StringGrid1.Cells[ACol+1,ARow]; end; end.
Eğer ki çözemezsen, mail adresini yaz. mail göndereyim programı.
Kolay gelsin.
Merhaba, kodları denedim çalıştırdım. Buttona bastığımda sizin attığınız ekran görüntüsünü elde ediyorum hatta atayım onu da atabilirsem tek fark şu stringGrid2 de sizde mesela hasan'ın karşısına daireno olarak 3 gelmiş bende o kısım boş kalıyor yani daireno alanı dolmuyor.
Onun haricinde bir kaç takıldığım yer daha var. Birazcık saçma gelebilir sorularım kusura bakmayın daha yeni öğreniyorum çoğu şeyi anlayamıyorum yeni keşfediyorum. Anladığım kadarıyla tablodaki hücreleri kod üzerinden girdik. Mesela burada 3 kişiyi girdik benim tablomda 200 kişi var bunları tek tek giremem . Tablolarımı veri tabanından aktaracağım yani o zaman sizin yazdığınız kodu kullanamam sanırım. Ya da kullanabiliyorumdur bu kısmı açıklayabilir misiniz?
Bir de mesela kendi tablom üzerinden konuşayım 2.tablomdaki oturan sütunundaki isimleri 1.tablomdaki açıklama sütununda arayıp bulmasını istemiştim ama açıklama sütununda sadece kişi ismi yok yanında kişi ile ilgili bilgiler var burada kelime olarak araması gerektiğini düşünmüştüm. Yani bu kodla yapamıyorum sanki. Açıklarsanız çok sevinirim şimdiden teşekkür ederim.

