AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Bei onClick sender übergeben

Ein Thema von killerkarl · begonnen am 15. Sep 2006 · letzter Beitrag vom 15. Sep 2006
Antwort Antwort
killerkarl

Registriert seit: 19. Jan 2005
40 Beiträge
 
Delphi 7 Personal
 
#1

Bei onClick sender übergeben

  Alt 15. Sep 2006, 07:49
Moin,

also ich habe 4 editfelder, auf die ich clicke und dann ändert das jeweils angeklickte seine Farbe.

dazu habe ich eine procedure focus geschrieben
in der übergebe ich das object und dann ändert er die Farbe des Feldes.

Soweit so gut, aber wenn ich diese procedure aufrufe muss ich das bei jedem textfeld machen also ungefähr so:

Delphi-Quellcode:
procedure focus(f:TEdit); //Das Feld wird eingefärbt.
begin
       z1.color:=clwhite;
       n1.color:=clwhite;
       z2.color:=clwhite;
       n2.color:=clwhite;
       f.Color:=clinfobk;
end;

procedure TForm1.z1Click(Sender: TObject);
var feld:Tedit;
begin
     feld:=z1; // Der Fokus wird auf das Feld gelegt und farblich markiert
     focus(feld);
end;
Ich wollte wissen, ob ich mir das ganze sparen kann und focus direkt aufrufen kann und wie ich dann denn Sender übergebe.
  Mit Zitat antworten Zitat
MOCI

Registriert seit: 2. Aug 2006
12 Beiträge
 
#2

Re: Bei onClick sender übergeben

  Alt 15. Sep 2006, 08:20
Hi,

mein Vorschlag wäre folgender:
Erstell eine property, die dein fokusiertes Edit haltet:
Code:
property FocusedCtrl: TWinControl read FFocusedCtrl write SetFocusedCtrl;
Erstelll 1 Prozedure MyMouseClick:
Code:
procedure TfrmMain.MyMouseClick(Sender: TObject);
begin
  FocusedCtrl := TWinControl(Sender);
  //mach dann deine Farbänderung
end;
Erstell die Edits zur Laufzeit und
Code:
procedure TfrmMain.btnHinzufuegenClick(Sender: TObject);
begin
  FocusedCtrl := TEdit.Create(Self);
  with FocusedCtrl do begin
    Name := IrgendEinName;
    OnClick := MyMouseClick;
  end;
  FocusedCtrl := FocusedCtrl;
end;
mfg MOCI
  Mit Zitat antworten Zitat
killerkarl

Registriert seit: 19. Jan 2005
40 Beiträge
 
Delphi 7 Personal
 
#3

Re: Bei onClick sender übergeben

  Alt 15. Sep 2006, 08:33
Moin danke für die schnelle antwort, aber geht es da nicht einfacher?

Ich habe nicht so sehr das große delphi wissen.
  Mit Zitat antworten Zitat
MOCI

Registriert seit: 2. Aug 2006
12 Beiträge
 
#4

Re: Bei onClick sender übergeben

  Alt 15. Sep 2006, 08:43
Du musst die Edits nicht zur Laufzeit erstellen.
mach folgendes beim Create des Formulars:

Code:
for I := 0 to ComponentCount - 1 do
  if Components[I] is TEdit then
    TEdit(Components[I]).OnClick := MyMouseClick;
d. h. die Schleife geht alle Komponenten von deinem Formular durch, handelt es sich dann um ein Edit,
dann weist es dem OnClick-Ereignis die Prozedur MyMouseClick zu.
  Mit Zitat antworten Zitat
MOCI

Registriert seit: 2. Aug 2006
12 Beiträge
 
#5

Re: Bei onClick sender übergeben

  Alt 15. Sep 2006, 08:59
Oder du machst es so:

doppelklicke im Objektinspektor bei einem Edit im Reiter "Ereignisse" auf OnClick doppelt.
Es wird dann automatisch eine Prozedur erstellt.

Schreib bei dieser Prozedur:
Code:
TEdit(Sender).Color := clinfobk;
weise diese prozedur allen Edits zu.

mfg MOCI
  Mit Zitat antworten Zitat
killerkarl

Registriert seit: 19. Jan 2005
40 Beiträge
 
Delphi 7 Personal
 
#6

Re: Bei onClick sender übergeben

  Alt 15. Sep 2006, 09:03
danke, genauso wollte ich es haben.
Danke
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:19 Uhr.
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