Delphi-PRAXiS
Seite 1 von 5  1 23     Letzte »    

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/)
-   -   Farbe zur Laufzeit verändern? (https://www.delphipraxis.net/180616-farbe-zur-laufzeit-veraendern.html)

Simo 3. Jun 2014 07:55

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??

DeddyH 3. Jun 2014 08:07

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.

Simo 3. Jun 2014 08:39

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..) ??

DeddyH 3. Jun 2014 08:42

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;

TiGü 3. Jun 2014 08:48

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?

himitsu 3. Jun 2014 08:49

AW: Farbe zur Laufzeit verändern?
 
Zitat:

Zitat von DeddyH (Beitrag 1261140)
so dass Du dazu eine Cracker-Klasse brauchen wirst.

Oder man packt eine PaintBox, oder Ähnliches, da rein.

Und wie man Farbverläufe zeichnet ... dazu sollten sich genügend Tutorials/Beispiele finden lassen, oder gar fertige Komponenten.

Jumpy 3. Jun 2014 09:17

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

Der schöne Günther 3. Jun 2014 09:24

AW: Farbe zur Laufzeit verändern?
 
Ich glaube wenn du in mspaint einmal aufmalst was du genau meinst kann man besser helfen.

himitsu 3. Jun 2014 09:39

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

Simo 3. Jun 2014 09:45

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 04:11 Uhr.
Seite 1 von 5  1 23     Letzte »    

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