Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Stringgrid in Tabbednotebook erstellen (https://www.delphipraxis.net/64567-stringgrid-tabbednotebook-erstellen.html)

programmierer 5. Mär 2006 11:47


Stringgrid in Tabbednotebook erstellen
 
Mit folgendem Code erzeuge ich eine neue Karte für das Tabbednotebook. Danach kommt noch ein Stringgrid dazu. Allerdings wird das Stringgrid auf der Form (bibofuture) platziert, und nicht auf der aktuellen Karte des Tabbednotebook.
Hier mal der Quellcode:

Delphi-Quellcode:
procedure Tbibofuture.neuerubrikClick(Sender: TObject);
 var kartei:TStringGrid;
begin
 rubrikneu.name.Text:='';
 rubrikneu.ShowModal;
 if rubrikneu.name.Text<>'' then
 begin
  tabbednotebook1.Pages.Add(rubrikneu.name.Text);

  kartei:=TStringgrid.Create(Self);
  kartei.Parent:=bibofuture;
  with kartei do
  begin
   left:=100;
   top:=100;
   width:=800;
   height:=600;
   name:='rubrik'+rubrikneu.name.Text;
  end;

 end;
end;
Meine Frage ist jetzt logischerweise: Wie erzeuge ich das Stringgrid auf der gerade aktiven Karte des Tabbednotebook?

dataspider 5. Mär 2006 12:57

Re: Stringgrid in Tabbednotebook erstellen
 
Hi,

wenn du das Form als Parent zuweist, so tut es das auch ;)
Also, kurzes Beispiel:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  Kartei  : TStringGrid;
  TabPage : TWinControl;
  PageIndex: Integer;
begin
  PageIndex := tabbednotebook1.Pages.Add('TabText');
  TabPage  := TWinControl(tabbednotebook1.Pages.Objects[PageIndex]);
  kartei   := TStringgrid.Create(Self);
  // TabPage als Parent!
  kartei.Parent := TabPage;
  with kartei do
  begin
   left  := 100;
   top   := 100;
   width := 800;
   height := 600;
  end;
end;
Cu, Frank

marabu 5. Mär 2006 13:10

Re: Stringgrid in Tabbednotebook erstellen
 
Hier noch eine alternative Vorgehensweise:

Delphi-Quellcode:
procedure TDemoForm.ButtonClick(Sender: TObject);
var
  ts: TTabSheet;
  sg: TStringGrid;
  tsName: String;
begin
  tsName := 'Neu';
  if not InputQuery('New page', 'Name', tsName)
  or (tsName = '') then
    Exit;
  ts := TTabSheet.Create(PageControl);
  ts.Caption := tsName;
  ts.PageControl := PageControl;
//sg := TStringGrid.CreateParented(ts.Handle);
  sg := TStringGrid.Create(ts);
  sg.Name := tsName;            // eingefügt
  sg.Align := alClient;
  ts.InsertControl(sg);
  PageControl.ActivePage := ts;
end;
Grüße vom marabu

programmierer 5. Mär 2006 13:25

Re: Stringgrid in Tabbednotebook erstellen
 
Danke, das von dataspider funktioniert erstmal.

Aber wie werden die einzelnen Stringgrids benannt? ich möchte nämlich jedes einzeln ansprechen können!
Ist es auch möglich den Namen in einer Variable zu speichern und statt dem namen die Variable zu verwenden, wenn ich Einträge in das Stringgrid einfügen will?

also z.B.:

Delphi-Quellcode:
//statt dem Namen
stringgrid1.Cells[0,0]:='Text';

//Die Variable in der der Name gespeichert ist
variable.Cells[0,0]:='Text';
Bei dem von marabu verstehe ich nicht ganz, wie es funktioniert, da ich noch Anfänger (vielleicht auch bisschen mehr) auf dem Gebiet Delphi-Programmierung bin und ich nicht gern Sachen verwende, die ich nicht verstehe!

marabu 5. Mär 2006 13:47

Re: Stringgrid in Tabbednotebook erstellen
 
Ich habe zwei Änderungen an meinem Code angebracht. Durch die Vergabe eines geeigneten Namens für das StringGrid kann es später leicht ermittelt werden - wenn du dir den Zeiger auf das StringGrid nicht gleich beim Erzeugen irgendwo merken willst. Hier das Prinzip:

Delphi-Quellcode:
var
  sg: TStringGrid;
begin
  with PageControl.ActivePage do
    sg := FindComponent(Caption);
end;
marabu

programmierer 5. Mär 2006 14:34

Re: Stringgrid in Tabbednotebook erstellen
 
Ähm... ja nur was ist das PageControl?
Meines Erachtens ist das eine Komponente, von der ich nicht weiß, wie man sie benutzt...
Muss ich das auch erst noch irgendiwe einfügen?

marabu 5. Mär 2006 14:48

Re: Stringgrid in Tabbednotebook erstellen
 
PageControl ist der Ersatz für die veraltete Win3.1 Komponente TabbedNoteBook. Du findest sie auf der Palettenseite "Win32".

marabu

programmierer 5. Mär 2006 15:24

Re: Stringgrid in Tabbednotebook erstellen
 
Da muss ich mich ja in das PageControl reinfitzen! Na mal sehen, kennt ihr ein gutes Tut, dass sich sehr ausführlich mit PC befasst?


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:36 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