Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   queltext kürzen mit schleifen (https://www.delphipraxis.net/154840-queltext-kuerzen-mit-schleifen.html)

DeddyH 27. Sep 2010 18:36

AW: queltext kürzen mit schleifen
 
Du meinst eine "reguläre" Prozedur? Ich weiß zwar nicht, wieso das unbedingt eine solche sein muss, aber lass Dir das Formular doch als Parameter übergeben.

xxsasch4xx 27. Sep 2010 18:41

AW: queltext kürzen mit schleifen
 
Delphi-Quellcode:
procedure bilderdeaktiveren(var form1);
var
  FEditArray: array[0..4] of TEdit;
  i: integer;
begin
  for i := 0 to 4 do
    FEditArray[i] := FindComponent('Image'+IntToStr(i)) as TEdit;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   bilderdeaktiveren(form1);
end;
du meinst so?
dann kommt aber die selbe fehler meldung wieder
es liegt ja auch nicht am Image da könnte ich ja einfach Form1.image reinschreiben dann wäre das gelöst aber es liegt irgentwie an diesem findcomponent befehl

DeddyH 27. Sep 2010 18:46

AW: queltext kürzen mit schleifen
 
Nochmal die Frage: wieso eine reguläre Prozedur und keine Methode von TForm1? So macht das jedenfalls keinen Sinn, zumal das Array eine lokale Variable ist, nach Austritt aus der Prozedur also gar nicht mehr bekannt ist.

Namenloser 27. Sep 2010 18:47

AW: queltext kürzen mit schleifen
 
So geht das nicht. FindComponent ist eine Methode von TComponent, die kannst du nicht einfach außerhalb einer von TComponent abgeleiteten Klasse aufrufen.

Wenn schon, dann müsste es ei deinem Code
Delphi-Quellcode:
form1.FindComponent('Image'+IntToStr(i)) as TEdit;
heißen.
Besser wär's aber, die reguläre Procedure gleich zu einer Methode von TForm1 zu machen.

xxsasch4xx 27. Sep 2010 18:49

AW: queltext kürzen mit schleifen
 
das wird mir zu kompliziert ich mach einfach einen unsichtbaren button den ich immer ausführe :wink:

DeddyH 27. Sep 2010 18:50

AW: queltext kürzen mit schleifen
 
Was mich außerdem verwirrt: Du hast ein Edit mit Namen "Image0"?

[edit] Wieso kompliziert?
Delphi-Quellcode:
type
  TForm1 = class(TForm)
  ...
  private
    FImages: array[1..4] of TImage; //ich denke mal, es sind Images
    procedure BilderDeaktivieren;
...

procedure TForm1.BilderDeaktivieren;
var
  i: integer;
begin
  //das gehört aber wohl eher ins FormCreate, hier sollten sie wohl unsichtbar werden
  for i := Low(FImages) to High(FImages) do
    FImages[i] := FindComponent('Image'+IntToStr(i)) as TImage;
end;
[/edit]

Namenloser 27. Sep 2010 18:56

AW: queltext kürzen mit schleifen
 
Zitat:

Zitat von xxsasch4xx (Beitrag 1052456)
das wird mir zu kompliziert ich mach einfach einen unsichtbaren button den ich immer ausführe :wink:

*schauder* Du machst Witze, oder? :shock: Das führt auf Dauer doch zu einem riesen Chaos!

Mach es gleich ordentlich mit einer Methode - das ist nämlich wirklich total einfach. Das OnClick-Ergeignis deines unsichtbaren Buttons ist übrigens auch nix anderes als eine Methode, nur mit dem Unterschied, dass du hier noch einen überflüssigen Button erzeugst.

Bomberbb 27. Sep 2010 18:57

AW: queltext kürzen mit schleifen
 
Hallo,

nun auch mal was von mir. Dann darfst Du das Array nicht lokal definieren, sonst nusst du jedes mal, wenn Du in die Procedure eintrittst die Edits wieder zuweisen, da die Werte der lokalen Variablen nach dem verlassen der Procedure verloren gehen.
Dann würde ich die Procedure auch als Methode des Formulars definieren, dann hast Du keine Probleme mit der sichtbarkeit von Formularkomponenten. Letzt endlich brauchst Du auch FindComponentnicht, du kennst ja die Editfelder.

Gruß

BBB

Code:
Tform1: Class (Tobject)
  Edit1 : TEdit;
  Edit2 : TEdit;
  Edit3 : TEdit;
  Edit4 : TEdit;
  Edit5 : TEdit;
  Private
    FEditArray : Array[0..4] of TEdit;
    procedure bilderdeaktiveren;
    procedure Formcreate(Sender:TObject);
  Public
end;

procedure TForm1.bilderdeaktiveren;
var
  FEditArray: array[0..4] of TEdit;
  i: integer;
begin
  for i := 0 to 4 do
    FEditArray[i] := FindComponent('Image'+IntToStr(i)) as TEdit;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  FEditArray[1] := Edit1;
  FEditArray[2] := Edit2;
  FEditArray[3] := Edit3;
  FEditArray[4] := Edit4;
  FEditArray[5] := Edit5;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   bilderdeaktiveren;
end;

xxsasch4xx 27. Sep 2010 19:12

AW: queltext kürzen mit schleifen
 
Zitat:

Was mich außerdem verwirrt: Du hast ein Edit mit Namen "Image0"?
ja da habe ich vergessen edit hinzuschreiben
ich brauch diese methode damit ich eigentlich imagefelder deaktviern und aktiviern kann.
aber ich habe gedacht wenn ich es erstmal mit edit feldern mache dann wäre es das selbe
aber jetzt hab ich es mit image feldern gemacht und jetzt geht garnix mehr!!
also es funktioniert irgentwie mit bildern nicht
ich weiss auch nicht warum

es ist doch eigentlich das selbe blos mit image's
das hier ist jetzt mein queltext

Delphi-Quellcode:
(...)
var
 zaehler:integer;
 Bilder: array[1..4] of TImage;
  for zaehler := 1 to 4 do
  begin
    Bilder[zaehler] := FindComponent('image'+IntToStr(i)) as Timage;
    Bilder[zaehler].enabled:=true;
  end;
Syntax fehler gibt es nicht aber er aktiviert die Image's nicht

MondiBob 27. Sep 2010 19:17

AW: queltext kürzen mit schleifen
 
Also 1. is dein Array völlig überflüssig, kannst einfach:
Delphi-Quellcode:
TImage(FindComponent('Image'+IntToStr(i))).Enabled := true;
schreiben und 2. sollte das so funktionieren, ansonsten muss der Fehler an einer anderen Stelle sein


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

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