Delphi-PRAXiS

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 Zur LZ erzeugter ToolBar wird nicht angezeigt (https://www.delphipraxis.net/93609-zur-lz-erzeugter-toolbar-wird-nicht-angezeigt.html)

guidobrose 8. Jun 2007 09:38


Zur LZ erzeugter ToolBar wird nicht angezeigt
 
Hallo, ich hätte da gern mal ein Problem...

Ich bastele mir ein Panel, auf dem die untergeordneten Element per Laufzeit erzeugt werden. Soweit sogut, hat auch funktioniert, aber jetzt möchte ich noch einen ToolBar einfügen und der wird NICHT angezeigt. But why?

Delphi-Quellcode:
unit UEinstellungen;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ToolWin, ComCtrls, StdCtrls, ExtCtrls, XTCtrls, ImgList, UDM;

type
  TEinstellungen = class(TPanel)
  private
    { Private-Deklarationen }
    TlBr: TToolBar;

    Information: TXTPanel;
    InfBenutzer: TXTEdit;
    InfComputer: TXTEdit;

    Datenbank: TXTPanel;
    DtbTreiber: TXTEdit;
    DtbServer: TXTEdit;
    DtbName: TXTEdit;

    Peripherie: TXTPanel;
    PerAmpelIP: TXTEdit;
    PerAmpelPort: TXTEdit;
    PerAnzeigeIP: TXTEdit;
    PerAnzeigePort: TXTEdit;
    procedure Enter(Sender: TObject);
  public
    { Public-Deklarationen }
    constructor Create(AOwner: TComponent; AParent: TWinControl);
  end;

implementation

constructor TEinstellungen.Create(AOwner: TComponent; AParent: TWinControl);
begin
  inherited Create(AOwner);
//Allgemeine Parameter vorbesetzen
  Parent:=AParent;
  BevelInner:=bvNone;
  BevelKind:=bkFlat;
  BevelOuter:=bvNone;
  ParentColor:=True;
  Top:=50; //Beliebiger Wert, der unterhalb von Toolbar liegt
  Align:=alClient;
  AlignWithMargins:=True;
  Visible:=False;
  OnEnter:=Enter;
//Untergeordnete Elemente erzeugen
  TlBr:=TToolBar.Create(self);
  TlBr.Parent:=self;
  TlBr.AlignWithMargins:=True;
  TlBr.DrawingStyle:=dsGradient;

  Information:=TXTPanel.Create(self,self);
  Information.Caption:='Information';
  Information.Top:=30;
  Information.Height:=80;
  Information.Width:=260;
  Information.Enabled:=False;//Nur Information, keine Eingaben
  InfBenutzer:=TXTEdit.Create(self,Information,30);
  InfBenutzer.Caption:='Benutzer';
  InfComputer:=TXTEdit.Create(self,Information,55);
  InfComputer.Caption:='Computer';

  Datenbank:=TXTPanel.Create(self,self);
  Datenbank.Caption:='Datenbank';
  Datenbank.Top:=120;
  Datenbank.Height:=105;
  Datenbank.Width:=260;
  DtbTreiber:=TXTEdit.Create(self,Datenbank,30);
  DtbTreiber.Caption:='Treiber';
  DtbServer:=TXTEdit.Create(self,Datenbank,55);
  DtbServer.Caption:='Server';
  DtbName:=TXTEdit.Create(self,Datenbank,80);
  DtbName.Caption:='Name';

  Peripherie:=TXTPanel.Create(self,self);
  Peripherie.Caption:='Peripherie';
  Peripherie.Top:=230;
  Peripherie.Height:=130;
  Peripherie.Width:=260;
  PerAmpelIP:=TXTEdit.Create(self,Peripherie,30);
  PerAmpelIP.Caption:='Ampel - IP';
  PerAmpelPort:=TXTEdit.Create(self,Peripherie,55);
  PerAmpelPort.Caption:='Ampel - Port';
  PerAnzeigeIP:=TXTEdit.Create(self,Peripherie,80);
  PerAnzeigeIP.Caption:='Anzeigetafel - IP';
  PerAnzeigePort:=TXTEdit.Create(self,Peripherie,105);
  PerAnzeigePort.Caption:='Anzeigetafel - Port';
end;


procedure TEinstellungen.Enter(Sender: TObject);
begin
  InfBenutzer.Text:=DM.Benutzer;
  InfComputer.Text:=DM.Computer;
  DtbTreiber.Text:=DM.Datenbank.Treiber;
  DtbServer.Text:=DM.Datenbank.Server;
  DtbName.Text:=DM.Datenbank.Name;
end;

end.
Das Panel selbst wird auf dem Hauptformular zur Laufzeit erzeugt, das funktioniert auch soweit.

Mein zweites Problem im Zusammenhang mit dem ToolBar ist, dass die Zuweisung
Delphi-Quellcode:
  TlBr.DrawingStyle:=dsGradient;
ebenfalls nicht funktioniert, da "dsGradient" einmal in ExtCtrls als
TBandDrawingStyle = (dsNormal, dsGradient)
und einmal in ComCtrls als
TTBDrawingStyle = (dsNormal, dsGradient)
deklariert wird. Was für ein Scheiß!

Robert Marquardt 8. Jun 2007 09:52

Re: Zur LZ erzeugter ToolBar wird nicht angezeigt
 
Ein TPanel ist eine TWinControl und muss daher einen gesetzten Parent haben damit es sichtbar ist.
Bei dsGradient musst du halt den richtigen Unit-Qualifier nehmen, also ExtCtrls.dsGradient oder ComCtrls.dsGradient.

guidobrose 8. Jun 2007 09:56

Re: Zur LZ erzeugter ToolBar wird nicht angezeigt
 
Zitat:

Bei dsGradient musst du halt den richtigen Unit-Qualifier nehmen, also ExtCtrls.dsGradient oder ComCtrls.dsGradient.
Aaaaah, wusste ich gar nicht, dass das so geht. Jetzt wird übrigens auch der ToolBar angezeigt. Der Parent wird natürlich im Hauptformular angegeben, welches das Panel erzeugt.

Robert Marquardt 8. Jun 2007 09:59

Re: Zur LZ erzeugter ToolBar wird nicht angezeigt
 
Ja, der Punkt ist in Delphi definitiv ueberbelegt. In C++ hat man "->", "::" und ".".


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