|
guidobrose
(Gast)
n/a Beiträge |
#1
Noch einmal ich, aber ich komm jetzt nicht mehr weiter... Der Quellcode ist etwas umfangreicher, aber ich habs mal (fast) komplett hinkopiert.
Grundsätzlich gibt es ein Datenmodul "DM", in dem die Imagliste für die Toolbuttons (unter anderem) liegt. Zusätzlich werden die einzelnen "Seiten", die im Programm aufgerufen werden können (momentan nur "Uebersicht" und "Einstellungen" auf einem Nachkommen von TPanel in eine eigene Unit ausgelagert. Die meisten Komponenten werden zur Lz auf dem Panel angeordnet (muss ich so machen, weil ich in der Explorerversion die visuellen Komponenten nicht erweitern kann und ein paar Schmankerl eingebaut habe). Zudem hoffe ich den Quelltext etwas übersichtlicher zu bekommen, wenn jede Seite ihre eigene Unit hat. Es funktioniert auch ganz gut und mit etwas Hilfe aus dem Forum, habe ich auch meinen untergeordneten Toolbar auf dem Panel untergebracht. Die Imageliste wird dem Toolbar aus dem Datenmodul zugeordnet (auch auf dem Hauptformular) und hier hakt es auch, denn sobald ich die Liste dem Toolbar zuweise (TEinstellungen.Enter), habe ich zwar einen Glyph auf dem Button, aber beim Beenden des Programmes bekomme ich eine Zugriffsverletzung. Kommentiere ich diese Zeile aus, dann läuft es wieder. Komischerweise scheint die Zuweisung der Imageliste an den Toolbar des Hauptformulars kein Problem zu verursachen. Die Zuweisung in "OnShow", bzw. "Enter" ist übrigens, weil das Datenmodul in der Create-Routine noch nicht erzeugt ist. Kann mir jemand mal unterstützend unter die Arme greifen?? Gruß.
Delphi-Quellcode:
unit ULlesy;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ToolWin, ComCtrls, StdCtrls, ExtCtrls, XTCtrls, ImgList, UDM, UUebersicht, UEinstellungen; type TLlesy = class(TForm) TlBr: TToolBar; LblInformation: TLabel; PnlStatus: TPanel; ImgStatusConnection: TImage; ImgStatusBenutzer: TImage; TlBtnUebersicht: TToolButton; TlBtnArchiv: TToolButton; TlBtnDatenbank: TToolButton; TlBtnEinstellungen: TToolButton; ToolButton5: TToolButton; TlBtnSeparator1: TToolButton; TlBtnInformation: TToolButton; TlBtnBeenden: TToolButton; TlBtnVollbild: TToolButton; procedure FormCanResize(Sender: TObject; var NewWidth, NewHeight: Integer; var Resize: Boolean); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); procedure TlBtnBeendenClick(Sender: TObject); procedure TlBtnInformationClick(Sender: TObject); procedure TlBtnEinstellungenClick(Sender: TObject); procedure TlBtnUebersichtClick(Sender: TObject); procedure TlBtnVollbildClick(Sender: TObject); private { Private-Deklarationen } Uebersicht: TUebersicht; Einstellungen: TEinstellungen; procedure SetPanel(VP: TVisiblePanel); public { Public-Deklarationen } end; var Llesy: TLlesy; implementation uses UInfo; {$R *.dfm} procedure TLlesy.FormCreate(Sender: TObject); begin //Allgemeine Vorbesetzungen Color:=clXTBackground; //Weitere Fenster erzeugen Uebersicht:=TUebersicht.Create(self,Llesy); Einstellungen:=TEinstellungen.Create(self,Llesy); end; procedure TLlesy.FormShow(Sender: TObject); begin //Allgemeine Vorbesetzungen TlBr.Images:=DM.ImgLst30x30; //Wird beim Start auf TRUE gesetzt und im Infodialog wieder gelöscht. DM.FirstStart:=True; //Infodialog aufrufen Information.Position:=poScreenCenter; Information.ShowModal; end; procedure TLlesy.FormCanResize(Sender: TObject; var NewWidth, NewHeight: Integer; var Resize: Boolean); begin //Minimale Größe auf 800x600 begrenzen if (NewWidth<800) or (NewHeight<600) then Resize:=False; end; procedure TLlesy.TlBtnBeendenClick(Sender: TObject); begin Close; end; procedure TLlesy.TlBtnInformationClick(Sender: TObject); begin Information.Position:=poMainFormCenter; Information.ShowModal; end; procedure TLlesy.SetPanel(VP: TVisiblePanel); begin Uebersicht.Visible:=VP=vpUebersicht; Einstellungen.Visible:=VP=vpEinstellungen; case VP of vpUebersicht: LblInformation.Caption:='Übersicht: Fahrzeuge an- und abmelden'; vpArchiv: ; vpDatenbank: ; vpEinstellungen: begin LblInformation.Caption:='Programm: Einstellungen bearbeiten'; Einstellungen.SetFocus; end; vpSQLService: ; end; end; procedure TLlesy.TlBtnUebersichtClick(Sender: TObject); begin SetPanel(vpUebersicht); end; procedure TLlesy.TlBtnEinstellungenClick(Sender: TObject); begin SetPanel(vpEinstellungen); end; procedure TLlesy.TlBtnVollbildClick(Sender: TObject); begin if not (Align=alClient) then begin DM.Anzeige.Top:=Top; DM.Anzeige.Left:=Left; DM.Anzeige.Width:=Width; DM.Anzeige.Height:=Height; Align:=alClient; end else begin Align:=alNone; Top:=DM.Anzeige.Top; Left:=DM.Anzeige.Left; Width:=DM.Anzeige.Width; Height:=DM.Anzeige.Height; end; end; end.
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; TlBtnSichern: TToolButton; 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 vom Toolbar liegt Align:=alClient; AlignWithMargins:=True; Visible:=False; OnEnter:=Enter; //Untergeordnete Elemente erzeugen TlBr:=TToolBar.Create(self); TlBr.Parent:=self; TlBr.DrawingStyle:=ComCtrls.dsGradient; TlBr.Height:=31; TlBr.ButtonHeight:=30; TlBr.ButtonWidth:=30; TlBtnSichern:=TToolButton.Create(self); TlBtnSichern.Parent:=TlBr; TlBtnSichern.ImageIndex:=6; Information:=TXTPanel.Create(self,self); Information.Caption:='Information'; Information.Top:=35; Information.Height:=80; Information.Width:=260; Information.Enabled:=False;//Nur Information, keine Eingaben möglich 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:=125; 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:=240; 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 TlBr.Images:=DM.ImgLst24x24; 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. |
![]() |
Ansicht |
![]() |
![]() |
![]() |
ForumregelnEs 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
|
|
Nützliche Links |
Heutige Beiträge |
Sitemap |
Suchen |
Code-Library |
Wer ist online |
Alle Foren als gelesen markieren |
Gehe zu... |
LinkBack |
![]() |
![]() |