![]() |
Splitter zur Laufzeit erzeugen?
Hallo,
irgendwie klappt es nicht den Splitter an die Stelle zu kriegen wo er hin soll. Ich habe ein Pagecontroll, darauf erstelle ich zur laufzeit immer Tabsheets. In den Tabsheets erstelle ich ein Synedit (alTop), ein VirtualTreeview (alClient) und eine Statusbar (alBottom). Nun soll der Splitter zwichen Synedit und Treeview... Ich krieg's einfach nicht. Ich habe mir zwar schon zahlreiche Threads dazu durchgelesen, aber leider hat es bisher noch nicht funktioniert. so erstelle ich das ganze Zeig:
Delphi-Quellcode:
Sheet[anzSQL]:=TTabSheet.Create(Form_Main.PageControl_NewTab);
Sheet[anzSQL].Parent:=Form_Main.PageControl_NewTab; Sheet[anzSQL].PageControl:=Form_Main.PageControl_NewTab; SQL_Edit[anzSQL]:=TSynEdit.Create(Sheet[anzSQL]); SQL_Edit[anzSQL].Parent:=Sheet[anzSQL]; VST_Edit[anzSQL]:=TVirtualStringTree.Create(Sheet[anzSQL]); VST_Edit[anzSQL].Parent:=Sheet[anzSQL]; Splitt[anzSQL]:=TSplitter.Create(Sheet[anzSQL]); // Wie geht das????? Splitt[anzSQL].Parent:=Sheet[anzSQL]; Splitt[anzSQL].Align:=alTop; MfG schuetze09 |
Re: Splitter zur Laufzeit erzeugen?
Hallo schuetze09,
ohne deinen Code getestet haben, laesst sich folgendes sagen: du musst die Komponenten in einer bestimmten Reihenfolge auf die Form setzen. Also zuerst SynEdit erstellen, und auf alTop setzen, danach den Splitter auch mit alTop. Anschliessend die Statusbar und auf alBottom setzen, und zum Schluss kommt noch die VirtualTreeView mit alClient. Wenn du die VTV nicht als letztes erstellst, ist saemtlicher Platz auf dem TabSheet weg und es ist kein Platz mehr fuer den Splitter. Ich hoffe das hilft ein wenig... Greetz alcaeus |
Re: Splitter zur Laufzeit erzeugen?
habe ich gemacht, geht aber auch nicht. da sitzt der Splitter über dem Synedit
|
Re: Splitter zur Laufzeit erzeugen?
Der Splitter funktioniert natürlich auch nur wenn du bei den anderen beiden Controls das Align auf alTop bzw. das andere dann noch auf alClient setzt. Du musst eben genau die gleichen Properties setzen die du auch zur designzeit im Objectinspektor setzen würdest.
folgendes Beispiel funktioniert (anstelle der Panels musst du dann eben deine anderen Componenten verwenden)
Delphi-Quellcode:
var PanelTop, PanelMiddle, PanelBottom: TPanel;
Splitter: TSplitter; begin PanelTop := TPanel.Create(nil); //dein Synedit PanelTop.Parent := Self; PanelTop.Align := alTop; PanelTop.Caption := 'Top'; Splitter := TSplitter.Create(nil); Splitter.Parent := Self; Splitter.Align := alTop; PanelBottom := TPanel.Create(nil); //deine StatusBar PanelBottom.Parent := Self; PanelBottom.Align := alBottom; PanelBottom.Caption := 'Bottom'; PanelMiddle := TPanel.Create(Self); //dein VirtualTreeView PanelMiddle.Parent := Self; PanelMiddle.Align := alClient; PanelMiddle.Caption := 'Middle'; |
Re: Splitter zur Laufzeit erzeugen?
Leider geht es auch nicht, hier mal mein Code:
Delphi-Quellcode:
MfGSetLength(Sheet, anzSQL +1); SetLength(SQL_Edit, anzSQL +1); SetLength(VST_Edit, anzSQL +1); SetLength(Splitt, anzSQL +1); SetLength(STB_Edit, anzSQL +1); // TabSheet erstellen Sheet[anzSQL]:=TTabSheet.Create(Form_Main.PageControl_NewTab); Sheet[anzSQL].Parent:=Form_Main.PageControl_NewTab; Sheet[anzSQL].PageControl:=Form_Main.PageControl_NewTab; Sheet[anzSQL].Caption:='Query '+ IntToStr(anzSQL); // SQL-Edit erstellen (Synedit) SQL_Edit[anzSQL]:=TSynEdit.Create(Sheet[anzSQL]); SQL_Edit[anzSQL].Parent:=Sheet[anzSQL]; with SQL_Edit[anzSQL] do begin Align:=alTop; ActiveLineColor:=clCream; Highlighter:=Form_Main.SynSQLSyn1; BorderStyle:=bsNone; SelectedColor.Background:=clHighlight; SelectedColor.Foreground:=clBtnHighlight; ShowHint:=True; Hint:='Hier Abfrage eintragen'; Gutter.AutoSize:= True; Gutter.Color:= clSkyBlue; Gutter.BorderColor:= clSkyBlue; Gutter.Font.Color:= clWindowText; Gutter.Font.Height:= -11; Gutter.Font.Name:= 'Courier New'; Gutter.Font.Style:= []; Gutter.LeftOffset:= 0; Gutter.RightOffset:= 3; Gutter.ShowLineNumbers:= True; Gutter.Width:= 20; Gutter.GradientStartColor:= clHighlight; Gutter.GradientEndColor:= clWindow; Height:=240; WordWrap:=True; Name:=NamePrefixSQL + IntToStr(anzSQL); Lines.Clear; OnKeyDown:=tempVST.SQL_EditOnKeyDown; end; // Splitter erstellen Splitt[anzSQL]:=TSplitter.Create(Sheet[anzSQL]); Splitt[anzSQL].Beveled:=True; Splitt[anzSQL].AutoSnap:=False; Splitt[anzSQL].Align:=alTop; // Statusbar erstellen STB_Edit[anzSQL]:=TStatusBar.Create(Sheet[anzSQL]); STB_Edit[anzSQL].Parent:=Sheet[anzSQL]; with STB_Edit[anzSQL] do begin Align:=alBottom; Panels.Add; Panels[0].Text:=''; Panels[0].Width:=200; Panels[0].Alignment:=taCenter; Panels.Add; Panels[1].Text:=''; Panels[1].Width:=200; Panels.Add; Panels[2].Text:=''; end; // VST-Erstellen VST_Edit[anzSQL]:=TVirtualStringTree.Create(Sheet[anzSQL]); VST_Edit[anzSQL].Parent:=Sheet[anzSQL]; with VST_Edit[anzSQL] do begin Align:=alClient; BorderStyle:=bsSingle; Header.Background:=clSkyBlue; Header.Style:=hsFlatButtons; Header.Options:=[hoColumnResize,hoDblClickResize,hoDrag,hoVisible]; TreeOptions.PaintOptions:=[toShowButtons,toShowDropmark,toShowHorzGridLines,toShowTreeLines,toShowVertGridLines,toThemeAware,toUseBlendedImages,toFullVertGridLines]; TreeOptions.SelectionOptions:=[toFullRowSelect]; Name:=NamePrefixVST + IntToStr(anzSQL); OnInitNode:=tempVST.VST_Edit_OnInitNode; OnGetText:=tempVST.VST_Edit_OnGetText; OnCompareNodes:=tempVST.VST_Edit_0nCompareNodes; OnFreeNode:=tempVST.VST_Edit_0nFreeNode; OnHeaderClick:=tempVST.VST_Edit_0nHeaderClick; end; schuetze09 |
Re: Splitter zur Laufzeit erzeugen?
Probiere mal
Delphi-Quellcode:
Splitt[anzSQL].Top := SQL_Edit[anzSQL].Height;
|
Re: Splitter zur Laufzeit erzeugen?
@Kroko1999: Super DANKE, so geht es...
Reihenfolge wie beschrieben und für den Splitter:
Delphi-Quellcode:
MfG
Splitt[anzSQL]:=TSplitter.Create(Sheet[anzSQL]);
Splitt[anzSQL].Parent:=Sheet[anzSQL]; Splitt[anzSQL].Beveled:=True; Splitt[anzSQL].AutoSnap:=False; Splitt[anzSQL].Top := SQL_Edit[anzSQL].Height; Splitt[anzSQL].Align:=alTop; schuetze09 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:41 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