Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Edit bzw. ComboBox in einem StringGrid darstellen (https://www.delphipraxis.net/30610-edit-bzw-combobox-einem-stringgrid-darstellen.html)

Alex_ITA01 27. Sep 2004 08:36


Edit bzw. ComboBox in einem StringGrid darstellen
 
Moin Moin erstmal!!!
Wollte mal fragen, ob es eine Möglichkeit gibt, z.B. ComboBox(en) und/oder Editfelder in einem StringGrid darzustellen.Also pro Zeile eine "extra" Komponente anzeigen.
Weil manche Zellen sollen nur 1/0 enthalten dürfen (CheckBox) oder nur bestimmte Strings (ComboBox-Auswahl...)

Hoffe ihr könnt mir helfen.
MFG Alex

ibp 27. Sep 2004 09:21

Re: Edit bzw. ComboBox in einem StringGrid darstellen
 
das geht!
hoffe habe an alles gedacht!


Delphi-Quellcode:
type TfoDBEdit = class(TForm)
  ...
  procedure setRect(rec:Trect; ObjType:integer);
  ...
private
..
end;


procedure TfoDBEdit.stringgridSelectCell(Sender: TObject; ACol, ARow: Integer;
                                      var CanSelect: Boolean);
begin
  if (ACol=1) or (ARow=1) then // feld 1-1 ist checkbox
      stringgrid.setRect(CellRect(1,1));
end;

procedure TfoDBEdit.setRect(rec:Trect);
var r:TRect;
begin
  // CheckBox in stringgrid
  CopyRect(r,rec); // rec an r übergeben
  r.BottomRight:=checkbox.Parent.ScreenToClient(stringgrid.ClientToScreen(r.BottomRight));
  r.TopLeft:=checkbox.Parent.ScreenToClient(stringgrid.ClientToScreen(r.TopLeft));
  checkbox.SetBounds(r.Left,r.Top,r.Right-r.Left,r.Bottom-r.Top);
  checkbox.BringToFront
end;

Alex_ITA01 27. Sep 2004 09:33

Re: Edit bzw. ComboBox in einem StringGrid darstellen
 
danke das geht!!!

wozu ist ObjType:integer deklariert in der procedure? Der wird doch nie verwendet?!
MFG Alex

Alex_ITA01 27. Sep 2004 09:51

Re: Edit bzw. ComboBox in einem StringGrid darstellen
 
das problem was ich jetzt noch habe ist, dass wenn mein eingabefokus vom StringGrid in die CheckBox "geht", dann wird die zuletzt markierte Zelle im StringGrid komplett blau gefüllt.Das will ich nicht!Also es soll so aussehen als ob der Fokus trotzdem auf dem StringGrid liegt.Bekommt man die "blaue Zelle" irgendwie "normalfarbig" ?
Alex

ibp 27. Sep 2004 11:08

Re: Edit bzw. ComboBox in einem StringGrid darstellen
 
Zitat:

Zitat von Alex_ITA01
danke das geht!!!

wozu ist ObjType:integer deklariert in der procedure? Der wird doch nie verwendet?!
MFG Alex

kannst du löschen, da das aus einem projekt kopiert ist, habs nur vergessen zu entfernen!

ibp 27. Sep 2004 11:33

Re: Edit bzw. ComboBox in einem StringGrid darstellen
 
Zitat:

Zitat von Alex_ITA01
das problem was ich jetzt noch habe ist, dass wenn mein eingabefokus vom StringGrid in die CheckBox "geht", dann wird die zuletzt markierte Zelle im StringGrid komplett blau gefüllt.Das will ich nicht!Also es soll so aussehen als ob der Fokus trotzdem auf dem StringGrid liegt.Bekommt man die "blaue Zelle" irgendwie "normalfarbig" ?
Alex


hä? :gruebel:

ibp 27. Sep 2004 14:06

Re: Edit bzw. ComboBox in einem StringGrid darstellen
 
Delphi-Quellcode:
///////////////////////////////////////////////////////////////////////////////
// Wenn Fokus nicht beim SG, dann blaue Zelle verbergen!
//
procedure TfoDBEdit.stringgridExit(Sender: TObject);
var grdRec:TGridRect;
begin
  with grdRec do
  begin
    Top:=-1;
    Left:=-1;
    Right:=-1;
    Bottom:=-1;
  end;
  stringgrid.Selection:=grdRec;
end;


///////////////////////////////////////////////////////////////////////////////
// Objekte im Grid unsichtbar machen,
// wenn per Scroll der Bereich ausserhalb liegt
//
procedure TfoDBEdit.stringgridTopLeftChanged(Sender: TObject);
begin
  if checkbox.Visible then checkbox.Visible:=false;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:40 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz