Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   TComponent <> TEdit (https://www.delphipraxis.net/158473-tcomponent-tedit.html)

Jakunar 18. Feb 2011 18:19

TComponent <> TEdit
 
Wunder schoenes Wochenende an Euch alle!

Ich hab folgendes Problem und spontan keine Ahnung wie ich das umschiffe...
Code:
procedure TForm1.MoveChange(Edit: TEdit);
begin
  if not Ord(Edit.Text[Edit.SelStart-1]) in [Ord('0')..Ord('9')] then
    Edit.Undo;
  if Length(Edit.Text) >= 2 then
    SelectNext(ActiveControl as TWinControl, true, true);
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
  MyEdit: TEdit;
begin
  for i:=0 to Form1.ComponentCount-1 do
    if Form1.Components[i] is TEdit then
      begin
        MyEdit := Form1.Components[i]; //[Error]: Incompatible types: 'TEdit' and 'TComponent'
        MyEdit.OnChange := MoveChange(Form1.Components[i]);
      end;
end;
Hat rgendwer von Euch vielleicht eine??

Gruss
Jakunar

mkinzler 18. Feb 2011 18:21

AW: TComponent <> TEdit
 
Du musst das Objekt Casten
Delphi-Quellcode:
MyEdit := TEdit(Form1.Components[i]);

Jakunar 18. Feb 2011 19:24

AW: TComponent <> TEdit
 
Alles klar!

Waermsten Dank funktioniert super!

himitsu 18. Feb 2011 19:46

AW: TComponent <> TEdit
 
Hier hattest du ja schon über IS geprüft, ob es ein TEdit ist, weswegen ein harter Cast ala
Delphi-Quellcode:
TEdit(Components[i])
ohne Probleme möglich ist.

Wenn es vorher mal nicht geprüft werden sollte, dann besser einen weichen Cast ala
Delphi-Quellcode:
(Components[i] as TEdit)
verwenden.

PS: Da dieses eh innerhalb der TForm1 steht, ist das
Delphi-Quellcode:
Form1.
unnötig.
Abgesehn davon solltest du möglichst auf diese globalen Variablen verzichten, da sie eigentlich mehr Schaden, als Nutzen anrichten können.

Sir Rufo 18. Feb 2011 22:13

AW: TComponent <> TEdit
 
Zitat:

Zitat von himitsu (Beitrag 1082762)
PS: Da dieses eh innerhalb der TForm1 steht, ist das
Delphi-Quellcode:
Form1.
unnötig.
Abgesehn davon solltest du möglichst auf diese globalen Variablen verzichten, da sie eigentlich mehr Schaden, als Nutzen anrichten können.

Und wenn man unbedingt da etwas stehen haben möchte, weil dann die Codevervollständigung schöner ist, dann nimmt man
Delphi-Quellcode:
Self


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:26 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