![]() |
Farbe zur Laufzeit verändern?
Hey zusammen!!
Ich hätte eine Frage : Wie kann man die Farbe eines Komponentes während der Laufzeit verändern/verschieben.? Z.b ein Panel.. [ gewölbt (rechts 80% blau, links 20% gelb). Und wenn ich drauf klicke muss sich die blaue Farbe nach rechts verschieben, so dass das ganze Panel fast gelb wird (~ 5% Blau bleibt am Rand rechts..) ?? Wie könne man sowas realisieren?? |
AW: Farbe zur Laufzeit verändern?
Bei Komponenten, die über einen Canvas verfügen (also z.B. TGraphicControl oder TCustomControl), kannst Du dazu das OnPaint-Ereignis nutzen. Speziell das TPanel hat zwar auch einen Canvas, aber der ist protected, so dass Du dazu eine Cracker-Klasse brauchen wirst.
|
AW: Farbe zur Laufzeit verändern?
Ich weiß leider nicht wie ich das machen soll/kann..-( ? Außerdem wie kriege ich das Panel gewölbt(Rand..) ??
|
AW: Farbe zur Laufzeit verändern?
Ich weiß zwar nicht so genau, was Du mit "gewölbt" meinst, aber prinzipiell könntest Du so etwas versuchen:
Delphi-Quellcode:
type
TPanel = class(ExtCtrls.TPanel) private (* privates Feld hinzufügen *) FLeftValue: integer; (* Setter-Methode *) procedure SetLeftValue(const Value: integer); protected (* Paint-Methode überschreiben *) procedure Paint; override; public (* Property hinzufügen für den Zugriff von außen *) property LeftValue: integer read FLeftValue write SetLeftValue; end; TfrmTest = class(TForm) TestPanel: TPanel; btnUpdate: TButton; procedure btnUpdateClick(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; ... procedure TPanel.Paint; begin inherited; Canvas.Brush.Color := clBlue; Canvas.FillRect(Rect(0, 0, FLeftValue, Height)); Canvas.Brush.Color := clYellow; Canvas.FillRect(Rect(FLeftValue, 0, Width, Height)); end; procedure TPanel.SetLeftValue(const Value: integer); begin if FLeftValue <> Value then begin FLeftValue := Value; Invalidate; end; end; procedure TfrmTest.btnUpdateClick(Sender: TObject); begin TestPanel.LeftValue := TestPanel.LeftValue + 10; end; |
AW: Farbe zur Laufzeit verändern?
1. Was hast du denn schon an Vorarbeit geleistet?
2. Wo ist dein bisheriger Quelltext? 3. Bei welchem KONKRETEN Schritt hast du ein Problem? |
AW: Farbe zur Laufzeit verändern?
Zitat:
Und wie man Farbverläufe zeichnet ... dazu sollten sich genügend Tutorials/Beispiele finden lassen, oder gar fertige Komponenten. |
AW: Farbe zur Laufzeit verändern?
Ich habe das so verstanden, dass es nicht um Farbverläufe geht, sondern einen gelben und einen blauen Bereich, daher wäre mein Vorschlag auf das Panel (das man pnlMain nennen könnte) zwei weitere Panel zu legen. Eines mit Align: alLeft (nenn es pnlLeft) und eines mit Align: alClient.
Dann kannst du das pnlLeft so groß oder klein ziehen wie du das beim Start ungefähr haben willst und beide Panel wie gewünscht einfärben. Dem OnClick beider Panel musst du dann die gleiche Prozedur zuweisen, in der dann die Größe des pnlLeft entsprechend verändert wird ala:
Code:
pnlLeft.Width=Round(pnlMain.Width*95/100) //~95% gelb
|
AW: Farbe zur Laufzeit verändern?
Ich glaube wenn du in mspaint einmal aufmalst was du genau meinst kann man besser helfen.
|
AW: Farbe zur Laufzeit verändern?
Ohne Farbverlauf: (dann sollte man vielleicht besser mal erklären, was "gewölbt" eigentlich bedeuten soll)
TGauge (unter Samples) zwei TBevel oder ein Canvas/TImage/TPaintBox, wo man das selber drauf malt |
AW: Farbe zur Laufzeit verändern?
Danke alle für Ihre Hilfe,Antwort..
Hier ist der Anhang (unten...) Wenn auf das Linke Bild (Panel) klicke soll es so werden (Bild rechts.) ?? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:52 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