Einzelnen Beitrag anzeigen

Benutzerbild von FAlter
FAlter

Registriert seit: 21. Jul 2004
Ort: Ostfildern
1.096 Beiträge
 
FreePascal / Lazarus
 
#7

Re: Button besonderes markieren

  Alt 31. Mai 2008, 21:00
Hi,

ich hab mal schnell was probiert weil einfach so

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:
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;
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.

Je nachdem, wie deine Komponenten heißen, solltest du statt Button etwas anderes schreiben (hattest du nicht 'BitBtn's?).

Mfg
FAlter
Felix Alter
  Mit Zitat antworten Zitat