Delphi-PRAXiS
Seite 2 von 3     12 3      

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 Button besonderes markieren (https://www.delphipraxis.net/114800-button-besonderes-markieren.html)

taaktaak 31. Mai 2008 21:42

Re: Button besonderes markieren
 
Moin,Moin,
wenn du das Beispiel von FAlter verwendest: Das gleiche noch mal, nur nicht mit clRed, sondern mit der Farbe des Hintergrunds (Color vom Form, Panel ...)

Delphiturbo 31. Mai 2008 21:55

Re: Button besonderes markieren
 
ich möchte das Button markieren, wenn der Inhalt in Edit1 sich ändert
und nicht beim MouseMove:
Delphi-Quellcode:
procedure TForm1.Edit1Change(Sender: TObject);
begin
Highlight(Btn);
end;
Ich kan eine andere Farbe nehmen ok, aber wo soll der Code liegen, damit die alte Markierung und nicht die neue gelöscht wird?

taaktaak 31. Mai 2008 22:02

Re: Button besonderes markieren
 
Eine etwas hirnlose, aber praktikable Lösung wäre, im OnChange des Edits zuerst alle in Frage kommenden Buttons mit der original Hintergrundfarbe zu übermalen und danach die Farbe für den betreffenden Button zu malen.

Mikender 31. Mai 2008 22:05

Re: Button besonderes markieren
 
Mach zuerst Highlight mit der Hintergrundfarbe und dann Highlight mit der neuen Farbe (Ergänze die Procedure doch noch um ein Parameter :lol: )

Delphiturbo 31. Mai 2008 22:13

Re: Button besonderes markieren
 
Ich habe eine andere Funktion mit einer anderen farbe

Delphi-Quellcode:
procedure TForm1.Edit1Change(Sender: TObject);
begin
Highlight(Btn);
if not Assigned(btn) then
Highlight2(Btn); //mit einer anderen farben (HG-Farbe)
end;
aber ohne Erfolg

taaktaak 31. Mai 2008 22:17

Re: Button besonderes markieren
 
Ohne das ganze wirklich nachvollziehen zu können: Du malst zuerst in rot, dann den gleichen (?!) Button noch mal in Hintergrundfarbe? Mach's doch mal, wie ich es vorgeschlagen habe. Das funktioniert auf jeden Fall.

Delphiturbo 31. Mai 2008 22:54

Re: Button besonderes markieren
 
Das habe ich schon gemacht aber die Buttons werden nicht mit der Highlight2-Farbe gefärbt !

Delphi-Quellcode:
procedure TForm1.Edit1Change(Sender: TObject);
begin
Highlight2(BitBtn1);
Highlight2(BitBtn2);
Highlight2(BitBtn3);
Highlight(Btn);
end;

rollstuhlfahrer 31. Mai 2008 23:09

Re: Button besonderes markieren
 
HI,

1. hast du die richtige Farbei bei Hintergrund2 (welche eigentlich? - clBtnFace?)
2. Wird Btn aktualisiert?? (oder bleibts beim alten button?)

rollstuhlfahrer

Delphiturbo 31. Mai 2008 23:16

Re: Button besonderes markieren
 
Es funktioniert und die alte Markierung wird auch gelöscht
Das Problem die Farbe in Highlight2 spielt keine Rolle
die Farbe in Highlight2 ist nicht meine Form-HG-Farbe totzdem wird nicht angezeigt !
Delphi-Quellcode:
procedure TForm1.Highlight(Control: TWinControl);
var
  Btn: TControl;
begin
  Btn := TControl(FindComponent('BitBtn' + Edit1.Text));
   if Btn is TControl then
    begin
      with canvas do
      begin
        Brush.Style := bsClear;
        with Pen do
        begin
          Width := 2;
          Color := clRed;
        end;
        Rectangle(Btn.Left-2, Btn.Top-2,
          Btn.Left + Btn.Width + 2, Btn.Top + Btn.Height + 2);
      end;
    end;
end;


procedure TForm1.Highlight2(Control: TWinControl);
begin
  if PtInRect(GetRect(Control, ABorder), ScreenToClient(Mouse.CursorPos)) then
        Canvas.Brush.Color :=clblue // egal welche farbe !
     
  else
    Canvas.Brush.Color := clBtnFace;
       Canvas.FillRect(GetRect(Control, ABorder));
   
end;
procedure TForm1.Edit1Change(Sender: TObject);
begin
Highlight2(BitBtn1);
Highlight2(BitBtn2);
Highlight2(BitBtn3);
Highlight(Btn);
end;

taaktaak 1. Jun 2008 00:35

Re: Button besonderes markieren
 
Wozu dient denn die MousePosition in Highlight2() ???? Du willst doch ein ganz bestimmtes Control, dass du als Parameter übergibst, behandeln! Lösche einfach den Quark ..

Delphi-Quellcode:
 if PtInRect(GetRect(Control, ABorder), ScreenToClient(Mouse.CursorPos)) then
        Canvas.Brush.Color :=clblue // egal welche farbe ! 
     
  else
'raus. Dann sollte es funktionieren :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:33 Uhr.
Seite 2 von 3     12 3      

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