Hallo,
ich habe mir von TDBGrid die Komponente TDBStringGrid abgeleitet, welche es mir erlaubt, auch das Ereignis OnSelectCell zu nutzen.
Dieses benötige ich, um in einer Zelle des DBGrid z.B. eine Listbox darzustellen. Das ganze sieht so aus:
Delphi-Quellcode:
procedure TmdiBuchungsliste.setRectListBox(rec:Trect);
var r:TRect;
begin
// ListBox in DBStringGrid
CopyRect(r,rec); // rec an r übergeben
r.BottomRight:=lbBuchungsliste.Parent.ScreenToClient(dbsgBuchungsliste.ClientToScreen(r.BottomRight));
r.TopLeft:=lbBuchungsliste.Parent.ScreenToClient(dbsgBuchungsliste.ClientToScreen(r.TopLeft));
lbBuchungsliste.SetBounds(r.Left,r.Top+TDrawgrid(dbsgBuchungsliste).defaultrowheight,r.Right-r.Left,200);
lbBuchungsliste.BringToFront;
end;
procedure TmdiBuchungsliste.dbsgBuchungslisteSelectCell(Sender: TObject;
ACol, ARow: Integer; var CanSelect: Boolean);
begin
setrectListBox(dbsgBuchungsliste.cellrect(Acol,Arow));
lbBuchungsliste.visible:=true;
lbBuchungsliste.setfocus;
end;
Durch diesen Code öffnet sich eine Listbox in der Zelle des DBStringGrids!
Ich möchte jetzt aber erreichen, das die Listbox wieder verschwindet, wenn ich außerhalb des Grid irgendwohin Klicke! Aber wie??
Danke und Gruß
Karsten