![]() |
Page control
Hallo!
Um die tabs vom Pagecontrol einzufärben verwende ich folgenden code (hier im Board gefunden), klappt auch super, nur wenn ich Typisierte Kunstanten verwende Meckert der Compiler. :x Was mach ich falsch?? Das alles, weil ich zur Laufzeit die farben durch den anwender ändern lassen möchte.
Delphi-Quellcode:
const
{ hier bekomme ich die Fehlermeldung} farbe11 :integer=44444; farbe12 :integer=44444; farbe13 :integer=44444; farbe14 :integer=44444; farbe15 :integer=44444;
Delphi-Quellcode:
const {FUNZT}
farbe11 = 44444; farbe12 = 44444; farbe13 = 444487; farbe14 = 44254; farbe15 = 44444;
Delphi-Quellcode:
mfg schniede
procedure TForm1.PageControlDrawTab(Control: TCustomTabControl;
TabIndex: Integer; const Rect: TRect; Active: Boolean); const _clTabColors : array [0..4] of TColor = (farbe11,farbe12,farbe13,farbe14,farbe15); _sTabCaptions : array [0..4] of string = (' Hauptansicht',' Einzelans.- Kunde',' Best. Waren ges.',' Warenlager',' Eigene Umsätze'); begin Control.Canvas.Brush.Color := _clTabColors[TabIndex]; Control.Canvas.FillRect(Rect); Control.Canvas.TextOut(Rect.Left+5,Rect.Top+3,_sTabCaptions[TabIndex]); end; [edit=Daniel B]Delphi-Tags korrigiert. Mfg, Daniel B[/edit] |
Re: Page control
Moin Schniede,
Zitat:
Welche Meldung kommt denn? |
Re: Page control
[Fehler] Kundenverwaltung.pas(2558): Konstantenausdruck erwartet
das zeigt mir der Compiler die Konstanten habe ich global deklariert ,wenn das was zu sagen hat. schniede P.s. das progi war glaube auch von dir !! |
Re: Page control
Ist doch nicht so gemacht:
Delphi-Quellcode:
Wenn ja, dann ohne CONST:
type TForm1 = class(TForm)
private { Private-Deklarationen } Const FarbeX: TColor = 44444; public { Public-Deklarationen } end;
Delphi-Quellcode:
Deins funktioniert zwar, richtiger währe es aber so.
type TForm1 = class(TForm)
private { Private-Deklarationen } FarbeX: TColor = 44444; public { Public-Deklarationen } end;
Delphi-Quellcode:
Const FarbeX: TColor = 44444;
|
Re: Page control
hi himitsu ,habe mal deine version probiert funktioniert genausewenig wie meine.
hab auch schon unter compileroptionen geschaut ,ist aber angehakt "zuweisbare typisierte Konstanten" ,hm weiß kein rat :wall: mfg schniede |
Re: Page control
So fällt mir auch nichts mehr ein.
Kannst'e mal den gesamten Code posten (als Anhang) oder per eMail, dann schau ich mir's mal direkt an. |
Re: Page control
Das wird ein problem.Das Progi besteht aus mehreren units,formularen und 5 tabellen gehören auch noch dazu.da brauchst du ne woche um den anfang zu finden. Ist aber nett gemeint oder hab ich dich falsch verstanden ? :wall:
hab da was in der hilfe gefunden ,weiß nur nicht wo ich das hinpinseln soll :roll:
Delphi-Quellcode:
Im Status $WRITEABLECONST OFF führt dieser Quelltext bei der Zuweisung an die Variable foo im begin..end-Block zu einem Compiler-Fehler. Sie können das Problem beheben, indem Sie foo nicht als const, sondern als var deklarieren.
In den früheren Versionen von Delphi und Borland Pascal konnten typisierte Konstanten immer geändert werden (wie im Status {$J+}). Deshalb muss älterer Quelltext, der änderbare typisierte Konstanten enthält, im Status {$J+} compiliert werden. vieleicht kanst du mir da helfen? |
Re: Page control
Moin Schniede,
der unter Teil stammt von mir, das stimmt wohl, aber der obere nicht ;-) Ich hatte auch Konstanten benutzt die mit = TColor(...) deklariert werden. Übrigens tritt der Fehler ja nicht bei der Konstantendeklaration auf, sondern wenn Du diese Nutzen willst. Wenn die Farben vom User eingestellt werden sollen, warum nimmst Du dann nicht statt des Konstanten Arrays eine Variable, die entsprechend der Auswahl die Einträge enthält. Halte ich für entschieden sauberer ;-) |
Re: Page control
{$J+} muss auf jeden Fall vor der Deklaration deiner Konstante angegeben werden.
z.B.
Delphi-Quellcode:
{$J+}
Const FarbeX: Integer = 44444; |
Re: Page control
Das würde ich liebend gerne Variablen benutzen, nur das hab ich nicht hinbekommen,dein quelltext zu ändern.
vieleicht kannst du mir das mal umschreiben das ich anstelle der Konst. variablen benutzen kann. mfg schniede |
Re: Page control
Code:
{$J+}
Const FarbeX: Integer = 44444; nein das klappt leider auch net. :oops: mfg schniede |
Re: Page control
Delphi-Quellcode:
oder so
Unit Unit1;
Interface Uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; Type TForm1 = Class(TForm) Procedure FormCreate(Sender: TObject); Procedure PageControlDrawTab(Control: TCustomTabControl; TabIndex: Integer; Const Rect: TRect; Active: Boolean); Private _clTabColors: Array[0..4] of TColor; End; Var Form1: TForm1; Implementation {$R *.dfm} Procedure TForm1.FormCreate(Sender: TObject); Begin _clTabColors[0] := Farbe11; _clTabColors[1] := Farbe12; _clTabColors[2] := Farbe13; _clTabColors[3] := Farbe14; _clTabColors[4] := Farbe15; End; Procedure TForm1.PageControlDrawTab(Control: TCustomTabControl; TabIndex: Integer; Const Rect: TRect; Active: Boolean); Const _sTabCaptions: Array[0..4] of Otring = (' Hauptansicht', ' Einzelans.- Kunde', ' Best. Waren ges.', ' Warenlager', ' Eigene Umsätze'); Begin Control.Canvas.Brush.Color := _clTabColors[TabIndex]; Control.Canvas.FillRect(Rect); Control.Canvas.TextOut(Rect.Left+5,Rect.Top+3,_sTabCaptions[TabIndex]); End; End.
Delphi-Quellcode:
Unit Unit1;
Interface Uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; Type TForm1 = Class(TForm) Procedure FormCreate(Sender: TObject); Procedure PageControlDrawTab(Control: TCustomTabControl; TabIndex: Integer; Const Rect: TRect; Active: Boolean); End; Var Form1: TForm1; _clTabColors: Array[0..4] of TColor; Implementation {$R *.dfm} Procedure TForm1.FormCreate(Sender: TObject); Begin _clTabColors[0] := Farbe11; _clTabColors[1] := Farbe12; _clTabColors[2] := Farbe13; _clTabColors[3] := Farbe14; _clTabColors[4] := Farbe15; End; Procedure TForm1.PageControlDrawTab(Control: TCustomTabControl; TabIndex: Integer; Const Rect: TRect; Active: Boolean); ... End. |
Re: Page control
Also was soll ich sagen bin echt sprachlos!
Danke es funzt. :roll: bis auf dein kleinen Schreibfehler.
Code:
Const _sTabCaptions: Array[0..4] of Otring (' Hauptansicht', ' Einzelans.- Kunde', '
Nun kann ich beruhigt schlafen gehen. Nochmal Danke himitsu !! mfg schniede |
Re: Page control
Moin Schniede,
ich hab' Dir mal ein Beispiel gebastelt, wie ich es machen würde.
Delphi-Quellcode:
Wobei ich eigentlich die Konstanten noch in eine eigenen Unit auslagern würde.
const
_iTabCount = 5; _aclInitTabColors : array [0.._iTabCount-1] of TColor = (clBlue,clRed,clGreen,clYellow,clWhite); _asTabCaptions : array [0.._iTabCount-1] of string = (' Hauptansicht',' Einzelans.- Kunde',' Best. Waren ges.',' Warenlager',' Eigene Umsätze'); type TForm1 = class(TForm) PageControl1: TPageControl; procedure PageControl1DrawTab(Control: TCustomTabControl; TabIndex: Integer; const Rect: TRect; Active: Boolean); procedure FormCreate(Sender: TObject); private { Private-Deklarationen } FaclTabColors : array [0.._iTabCount-1] of TColor; public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.PageControl1DrawTab(Control: TCustomTabControl; TabIndex: Integer; const Rect: TRect; Active: Boolean); begin Control.Canvas.Brush.Color := FaclTabColors[TabIndex]; Control.Canvas.FillRect(Rect); Control.Canvas.TextOut(Rect.Left+5,Rect.Top+3,_asTabCaptions[TabIndex]); end; procedure TForm1.FormCreate(Sender: TObject); var i : integer; begin for i := low(FaclTabColors) to high(FaclTabColors) do begin FaclTabColors[i] := _aclInitTabColors[i]; with TTabSheet.Create(self) do begin Parent := PageControl1; PageControl := PageControl1; Name := 'ts'+IntToStr(i+1); end; end; end; end. |
Re: Page control
He Ihr seid echt klasse jetzt kann ich mir gleich mehr Varianten auswählen.
Danke Christian und himitsu habt ihr super gemacht. So nu sieht es auch gleich gut aus :roll: mfg schniede |
Re: Page control
Moin Schniede,
einen hab' ich noch vergessen: Diese Zeile:
Delphi-Quellcode:
muss noch in das dynamische Erzeugen der Tabsheets eingefügt werden, damit deren Breite stimmt.
Caption := _asTabCaptions[i];
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:08 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