Einzelnen Beitrag anzeigen

karsten.kg

Registriert seit: 28. Jun 2009
7 Beiträge
 
#1

in DBGrid-Celle dargestelle Listbox wieder unsichtbar machen

  Alt 10. Jul 2009, 19:20
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
  Mit Zitat antworten Zitat