Merhaba Arkadaşlar,
Form'da bulunan iki stringgrid'ten birinin satırını seçince diğerinde de aynı satırı seçebiliyorum ancak StringGrid1'de satırları aşağıya doğru indirdiğimde StringGrid2'deki satırlar aşağıya doğru inmiyor. bu sorunu nasıl çözebilirim yardımcı olursanız sevinirim, bir süre araştırma yaptım ancak iki stiringgrid için bir uygulama örneğine rastlamadım maalesef.
iki StringGrid için aynı satırın seçilmesi
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Re: iki StringGrid için aynı satırın seçilmesi
Merhaba,
Ekteki projede çalışan örnek mevcuttur. Kod örnekleri ise aşağıdadır.
Kaynak: http://stackoverflow.com/questions/3302 ... nts-delphi
Ekteki projede çalışan örnek mevcuttur. Kod örnekleri ise aşağıdadır.
Kaynak: http://stackoverflow.com/questions/3302 ... nts-delphi
Kod: Tümünü seç
...
private
{ Private declarations }
GridXWndProc, GridXSaveWndProc: Pointer;
GridYWndProc, GridYSaveWndProc: Pointer;
procedure GridXCustomWndProc(var Msg: TMessage);
procedure GridYCustomWndProc(var Msg: TMessage);
...
Kod: Tümünü seç
procedure TForm15.FormCreate(Sender: TObject);
begin
GridXWndProc := MakeObjectInstance(GridXCustomWndProc);
GridXSaveWndProc := Pointer(GetWindowLong(GridX.Handle, GWL_WNDPROC));
SetWindowLong(GridX.Handle, GWL_WNDPROC, LongInt(GridXWndProc));
GridYWndProc := MakeObjectInstance(GridYCustomWndProc);
GridYSaveWndProc := Pointer(GetWindowLong(GridY.Handle, GWL_WNDPROC));
SetWindowLong(GridY.Handle, GWL_WNDPROC, LongInt(GridYWndProc));
end;
procedure TForm15.GridXCustomWndProc(var Msg: TMessage);
begin
Msg.Result := CallWindowProc(GridXSaveWndProc, GridX.Handle, Msg.Msg, Msg.WParam, Msg.LParam);
case Msg.Msg of
WM_KEYDOWN:
begin
case TWMKey(Msg).CharCode of VK_UP, VK_DOWN, VK_PRIOR, VK_NEXT:
GridY.Perform(Msg.Msg, Msg.WParam, Msg.LParam);
end;
end;
WM_VSCROLL:
GridY.Perform(Msg.Msg, Msg.WParam, Msg.LParam);
WM_HSCROLL:
GridY.Perform(Msg.Msg, Msg.WParam, Msg.LParam);
WM_MOUSEWHEEL:
begin
ActiveControl := GridY;
GridY.Perform(Msg.Msg, Msg.WParam, Msg.LParam);
end;
WM_DESTROY:
begin
SetWindowLong(GridX.Handle, GWL_WNDPROC, Longint(GridXSaveWndProc));
FreeObjectInstance(GridXWndProc);
end;
end;
end;
procedure TForm15.GridXMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
GridY.Row := GridX.Row;
end;
procedure TForm15.GridYCustomWndProc(var Msg: TMessage);
begin
Msg.Result := CallWindowProc(GridYSaveWndProc, GridY.Handle, Msg.Msg, Msg.WParam, Msg.LParam);
case Msg.Msg of
WM_KEYDOWN:
begin
case TWMKey(Msg).CharCode of VK_UP, VK_DOWN, VK_PRIOR, VK_NEXT:
GridX.Perform(Msg.Msg, Msg.WParam, Msg.LParam);
end;
end;
WM_VSCROLL:
GridX.Perform(Msg.Msg, Msg.WParam, Msg.LParam);
WM_HSCROLL:
GridX.Perform(Msg.Msg, Msg.WParam, Msg.LParam);
WM_MOUSEWHEEL:
begin
ActiveControl := GridX;
GridX.Perform(Msg.Msg, Msg.WParam, Msg.LParam);
end;
WM_DESTROY:
begin
SetWindowLong(GridY.Handle, GWL_WNDPROC, Longint(GridYSaveWndProc));
FreeObjectInstance(GridYWndProc);
end;
end;
end;
procedure TForm15.GridYMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
GridX.Row := Gridy.Row;
end;
- Dosya ekleri
-
- gridsync.rar
- İki dtring grid senkronizasyonu
- (66.82 KiB) 34 kere indirildi
Re: iki StringGrid için aynı satırın seçilmesi
Çok teşekkür ederim ilginiz için. Gerçekten işime yaradı. Hoşçakalın.