![]() |
Button besonderes markieren
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ich habe mehrere BitBtn Buttons und möchte ich das Button irgendwie besonderes markieren, wenn sein Name in Feld Edit1.Text steht Hat jemand eine Idee? Nicht unbedingt eine Markierung wie im Bild |
Re: Button besonderes markieren
Button gibts mit FindComponent();. Das markieren geht mit Canvas, falls du es noch nicht erledigt hast.
rollstuhlfahrer |
Re: Button besonderes markieren
Liste der Anhänge anzeigen (Anzahl: 1)
Ich hab hier ein kleines Demo dazu rumliegen, das ich irgendwann mal programmiert hab. Vielleicht hilft es dir.
|
Re: Button besonderes markieren
Ich möchte z.B. ein Shape mit einem Timer auf das Button positionieren
z.B.
Delphi-Quellcode:
:gruebel:
//shape1.left:=BitBtn1.left;
shape1.left://nun muss ich den BitBtn-Namen, der sein Name in Edit1.Text steht nehmen !!! |
Re: Button besonderes markieren
Guck dir doch einfach mal mein Demo an :roll:
|
Re: Button besonderes markieren
Zitat:
Ich möchte aber nicht jedes Objekt markieren, wo der Cursor gerade sich befindet, sondern nur das Objekt, das sein name in Edit1 steht kann man den Code so anpassen ? |
Re: Button besonderes markieren
Hi,
ich hab mal schnell was probiert weil einfach so :nerd: Aber versuche es bitte wenigstens zu verstehen, der rote Kasten sagt mir, dass du das noch nicht probiert hast. :( FindComponent findet deine Komponente - oder gibt nil zurück. Diese wird zu Btn (einem TControl) zugewiesen. Der weitere Code wird nur ausgeführt, wenn Btn tatsächlich ein TControl ist (ganz wichtig!), da Left, Top, Width und Height benötigt werden - dazu muss es ein TControl sein. Es werden die Einstellungen zum Zeichnen gesetzt: Keine Füllung (Brush.Style = bsClear), Linienbreite 2 und rote Linie. Damit wird ein Rechteck gezeichnet (Koordinaten: obere linke und untere rechte Ecke). Der Code dazu sieht so aus:
Delphi-Quellcode:
Am besten als eine Methode die in OnPaint des Forms sowie beim OnChange des Edits aufgerufen wird, wobei im OnChange des Edits noch ein Repaint; stehen sollte, um die alte Markierung zu löschen.
var
Btn: TControl; begin Btn := TControl(FindComponent('Button' + Edit1.Text)); //if Assigned(Btn) then //nicht nötig, da (nil is TControl) = false 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; Je nachdem, wie deine Komponenten heißen, solltest du statt Button etwas anderes schreiben (hattest du nicht 'BitBtn's?). Mfg FAlter |
Re: Button besonderes markieren
Ich habe so versucht :
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var btn: TControl; begin Btn := TControl(FindComponent('BitBtn' + Edit1.Text)); end; procedure TForm1.BitBtn1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin Highlight(Btn); //Incompatible types: 'TWinControl' and 'TControl' end; |
Re: Button besonderes markieren
Dann caste doch nach TWinControl
|
Re: Button besonderes markieren
Zitat:
Ich muss nun die alte Markierung löschen Wie kann ich in OnChange die alte Markierung wieder löschen, sonst werden alle BitBtns markiert |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09: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