AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Splitter zur Laufzeit erzeugen?

Ein Thema von schuetze09 · begonnen am 21. Apr 2005 · letzter Beitrag vom 22. Apr 2005
Antwort Antwort
schuetze09

Registriert seit: 3. Mär 2004
113 Beiträge
 
Delphi 2005 Architect
 
#1

Splitter zur Laufzeit erzeugen?

  Alt 21. Apr 2005, 18:09
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
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#2

Re: Splitter zur Laufzeit erzeugen?

  Alt 21. Apr 2005, 18:12
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
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
schuetze09

Registriert seit: 3. Mär 2004
113 Beiträge
 
Delphi 2005 Architect
 
#3

Re: Splitter zur Laufzeit erzeugen?

  Alt 21. Apr 2005, 18:31
habe ich gemacht, geht aber auch nicht. da sitzt der Splitter über dem Synedit
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Splitter zur Laufzeit erzeugen?

  Alt 21. Apr 2005, 18:54
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';
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
schuetze09

Registriert seit: 3. Mär 2004
113 Beiträge
 
Delphi 2005 Architect
 
#5

Re: Splitter zur Laufzeit erzeugen?

  Alt 22. Apr 2005, 05:45
Leider geht es auch nicht, hier mal mein Code:
Delphi-Quellcode:

  SetLength(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;
MfG
schuetze09
  Mit Zitat antworten Zitat
Benutzerbild von Kroko1999
Kroko1999

Registriert seit: 21. Apr 2005
Ort: Spremberg
455 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Splitter zur Laufzeit erzeugen?

  Alt 22. Apr 2005, 06:48
Probiere mal
Splitt[anzSQL].Top := SQL_Edit[anzSQL].Height;
  Mit Zitat antworten Zitat
schuetze09

Registriert seit: 3. Mär 2004
113 Beiträge
 
Delphi 2005 Architect
 
#7

Re: Splitter zur Laufzeit erzeugen?

  Alt 22. Apr 2005, 06:53
@Kroko1999: Super DANKE, so geht es...

Reihenfolge wie beschrieben und für den Splitter:
Delphi-Quellcode:
  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;
MfG
schuetze09
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:51 Uhr.
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