Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TStringGrid Zellen - TUpDown in Zellen (https://www.delphipraxis.net/65099-tstringgrid-zellen-tupdown-zellen.html)

Hirnsausen 12. Mär 2006 13:06


TStringGrid Zellen - TUpDown in Zellen
 
Erneut Grüße.

Wie kann ich jede Zelle der 2. Column mit einem TUpDown-Feature ausstatten? Ich möchte damit die Editiermöglichkeit dieser Zellen begrenzen.

Die Anzahl der Rows ändert sich zur Laufzeit mehrmals. Ich halte ein integriertes TUpDown programmiertechnisch für mich interessanter als ein neben dem TStringGrid existierendes TUpDown. Können Zellen mit so einem Zusatzobjekt ausgestattet werden, so daß es bei Row-Erstellung schon automatisch mit dabei ist?

Auch gleich eine weitere Frage: das TUpDown braucht erst bei Editieren der Zelle sichtbar zu sein, ist dies machbar?

marabu 12. Mär 2006 13:20

Re: TStringGrid Zellen - TUpDown in Zellen
 
Hallo Sven,

der standardmäßige inplace editor wird einfach vor dem StringGrid gezeichnet, wenn er gebraucht wird. Genauso kannst auch du ein beliebiges Control dort zeichnen. Dazu ermittelst du das Rechteck, welches dir zur Verfügung steht und überlegst dir, wie du den Edit-Modus ein- bzw. ausschaltest. Beispiele findest du, wenn du im Netz nach "stringgrid inplace editor" suchst. klick

marabu

Hirnsausen 12. Mär 2006 18:34

Re: TStringGrid Zellen - TUpDown in Zellen
 
Hallo,

danke zunächst für den Link. Ich habe mich dort umgeschaut und versucht, jenen Code für mein TUpDown zu adaptieren.

Leider klappt es nicht richtig:
- Das TUpDown wird nicht sichtbar.
- Andere Buttons sind nicht mehr benutzbar.

Das TUpDown wurde invisible auf der selben Form abgelegt, reicht von 1 bis 10.

Hier zum besseren Verständnis der Code:

Delphi-Quellcode:
procedure TAlpha.StringGridSounds0SelectCell(Sender: TObject; ACol,
  ARow: Integer; var CanSelect: Boolean);
var
 R: TRect;
begin
 if ACol=2 then
 begin
  with StringGridSounds0 do
  begin
   Options:=Options+[goEditing];
  end;
  R:=StringGridSounds0.CellRect(ACol,ARow);
  R.Left:=R.Left+StringGridSounds0.Left;
  R.Right:=R.Right+StringGridSounds0.Left;
  R.Top:=R.Top+StringGridSounds0.Top;
  R.Bottom:=R.Bottom+StringGridSounds0.Top;
  with UpDownSounds do
  begin
   Left:=R.Left+1;
   Top:=R.Top+1;
   Width:=(R.Right+1)-R.Left;
   Height:=(R.Bottom+1)-R.Top;
   Visible:=True;
   SetFocus;
  end;
 end
 else
 if ACol<>2 then
 begin
  with StringGridSounds0 do
  begin
   Options:=Options-[goEditing];
  end;
 end
end;

procedure TAlpha.StringGridSounds0Exit(Sender: TObject);
begin
 StringGridSounds0.Cells[2,StringGridSounds0.Row]:=IntToStr(UpDownSounds.Position);
 UpDownSounds.Visible:=False;
 StringGridSounds0.SetFocus;
end;
Was muß ich ändern?

marabu 12. Mär 2006 18:41

Re: TStringGrid Zellen - TUpDown in Zellen
 
Wo und wie erzeugst du das UpDown-Control? Soll das Control immer sichtbar sein, wenn eine Zelle in der dritten Spalte des Grids fokusiert ist?

marabu

Hirnsausen 12. Mär 2006 18:59

Re: TStringGrid Zellen - TUpDown in Zellen
 
Hallo Marabou,

danke für Deine Hilfe. Ich erzeuge das TUpDown beim Designing der Form in der IDE, also wohl bei Form.OnCreate. denke ich.

Ja, jedesmal, wenn irgendeine Zelle der dritten Säule (Column 2) selektiert wurde, soll das TUpDown sichtbar werden. Und Unsichtbar, wenn der Editiervorgang abgeschlossen ist und die Zelle den Wert des TUpDown.Position übernommen hat.

Hirnsausen 13. Mär 2006 15:20

Re: TStringGrid Zellen - TUpDown in Zellen
 
Wer kann helfen?

marabu 13. Mär 2006 17:43

Re: TStringGrid Zellen - TUpDown in Zellen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Sven,

dein Versuch ist doch gar nicht so falsch gewesen. Schau dir mein Beispiel an und finde den Unterschied. Wie es am Ende zu realisieren ist, das hängt von einer Reihe von Detailanforderungen ab, die du noch nicht mitgeteilt hast.

Grüße vom marabu

Hirnsausen 13. Mär 2006 19:03

Re: TStringGrid Zellen - TUpDown in Zellen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Marabou,

ich denke, ich werde Dir (und allen anderen hilfsbereiten Teilnehmern) den gesamten Sourcecode zugänglich machen. Da ich keine 3rd-Party-Elemente verwende, sollte also alles ganz problemlos kompilierbar sein.

Das Löschen von Rows geht auch noch nicht richtig, aber vieleicht komme ich damit selbst klar.

Alle Versuche mache ich gegenwärtig mit dem StringGridSounds0 innerhalb dieses Projektes. Das seitliche UpDownSounds ist nur eine vorläufige Lösung, es soll ja durch ein UpDown innerhalb jeder editierbaren Zelle ersetzt werden.

Zitat:

Wo und wie erzeugst du das UpDown-Control?
Durch Anbringen auf der Form, bis jetzt, innerhalb der IDE.

Zitat:

Soll das Control immer sichtbar sein, wenn eine Zelle in der dritten Spalte des Grids fokusiert ist?
Ja.

Grüße,

Sven

Hirnsausen 13. Mär 2006 20:31

Re: TStringGrid Zellen - TUpDown in Zellen
 
Hallo Marabou,

während Deine Beispielsform funktioniert, bleibt bei meiner Form das UpDown noch immer unsichtbar.

Hier mein modifizierter Code nach Deinem Beispiel:

Delphi-Quellcode:
procedure TAlpha.StringGridSounds0SelectCell(Sender: TObject; ACol,
  ARow: Integer; var CanSelect: Boolean);
var
 R: TRect;
begin
 if ACol=2 then
 begin
  with StringGridSounds0 do
  begin
   Options:=Options-[goEditing];
   R:=CellRect(ACol, ARow);
  end;
  Zeile:=ARow;
  with UpDownSounds do
  begin
   Position:=StrToInt(StringGridSounds0.Cells[2,Zeile]);
   Top:=R.Top;
   Left:=R.Right;
   Visible:=True;
  end;
 end
 else
 if ACol<>2 then
 begin
  with StringGridSounds0 do
  begin
   Options:=Options-[goEditing];
  end;
  UpDownSounds.Visible:=False;
 end
end;
Entweder liegt es am Positionieren, oder an irgend einem anderen Faktor welchen ich noch nicht kenne.

Sven

Hirnsausen 13. Mär 2006 23:04

Re: TStringGrid Zellen - TUpDown in Zellen
 
(siehe unten)


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:13 Uhr.
Seite 1 von 2  1 2      

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