Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Code in andere Unit auslagern (https://www.delphipraxis.net/56293-code-andere-unit-auslagern.html)

Jerry 3. Nov 2005 13:31


Code in andere Unit auslagern
 
Hallo zusammen
Zuerst mal ein Dankeschön an alle die immer sofort helfen... ;-) macht wirklich Spass so...!

Folgendes Problem:

Ich habe folgenden Code in einer Unit:

Delphi-Quellcode:
var
  Compo: TComponent;
begin
   Compo:= FindComponent('edit1');
   if compo<> nil
   then
   begin
    TWinControl(Compo).TabStop := False;
   end;
end;
Wie kann ich diesen Code in eine andere Unit auslagern, damit ich diesen Code nicht redundant anlegen muss?
Ich möchte immer das Form übergeben, mit dem bei gewissen Feldern der Tabstop auf False gesetzt wird.
Die Komponenten die auf Tabstop False müssen lade ich von der Datenbank.

Ich möchte dies eigentlich so aufrufen können:

LoadTabStop(frm_Unit1);

Unit1 ist vom Typ TForm.

Wie sieht jetzt syntax mässig die LoadTabStop aus....


Weiss da jemand Rat...? Ich denke es geht hier nur um den richtigen Syntax...

Danke!

franktron 3. Nov 2005 13:42

Re: Code in andere Unit auslagern
 
Ganz einfach

Delphi-Quellcode:
Procedure LoadTabStop(form : TForm);
...

Jerry 3. Nov 2005 13:51

Re: Code in andere Unit auslagern
 
habe ich eben auch gemeint.

ich habe das so versucht:

ich brauche für die DB den Formularnamen, dies habe ich so versucht:

variabledb=FormularName.Name // dies passt beim Kompilieren, aber in der Ausführung gibt es einen Fehler...

weiter geht folgender Code auch nicht:

Komponente:= FormularName.Findcomponent('edit1'); kann zwar kompiliert werden, scheitert aber in der Ausführung....


mmm halt etwas blöd das ganze zu erklären...

franktron 3. Nov 2005 13:54

Re: Code in andere Unit auslagern
 
Ahh tschuldige mein Fehler so hab ich das gemacht

Delphi-Quellcode:
procedure Felder (c : TComponent);
Begin
  With c do
  Begin
    FindComponent(xxx)
  End;
End;

Jerry 3. Nov 2005 14:04

Re: Code in andere Unit auslagern
 
Sorry check ich jetzt nicht ganz...?

kannst du dies vielleicht genauer erörtern... danke....

Khabarakh 3. Nov 2005 14:05

Re: Code in andere Unit auslagern
 
Eine lokale Funktion in einer anderen Unit macht keinen Sinn. Du greifst ja bewusst auf ein Control von TFormX zu, dann solltest du die Funktion auch TFormX unterordnen -> Methode von TFormX. Aber warum benutzt du überhaupt FindComponent und benutzt nicht direkt TFormX.Edit1 :gruebel: .

Jerry 3. Nov 2005 14:09

Re: Code in andere Unit auslagern
 
ganau das ist das Problem, wie lautet der Syntax, wenn ich in einer Variable

"Formularname" hier steht in der Variable "frm_Unit1" drin, den Tabstop setzen möchte...

also ich würde das so schreiben:

Formularname.Tabstop := False; // Formularname ist aber eine andere Unit


aber genau das funzt nicht...

Khabarakh 3. Nov 2005 14:21

Re: Code in andere Unit auslagern
 
Zitat:

Zitat von Jerry
// Formularname ist aber eine andere Unit

:gruebel: ? Ist "Forumarname" jetzt eine Variable oder eine Unit? Und wenn ersteres: ein Objekt oder ein String? Und wenn davon letzteres (:stupid:): So kann das nicht gehen, wann, wo und warum füllst du diese Variable?

Jerry 3. Nov 2005 14:24

Re: Code in andere Unit auslagern
 
sorry ist eben etwas umständlich das ganze zu beschreiben...

FormularName ist eine Variable vom Typ TForm. In dieser Variable wird eine Unit mitgegeben.

Also in FormularName ist die Unit1 drin.

Khabarakh 3. Nov 2005 15:01

Re: Code in andere Unit auslagern
 
Zitat:

Zitat von Jerry
sorry ist eben etwas umständlich das ganze zu beschreiben...

FormularName ist eine Variable vom Typ TForm. In dieser Variable wird eine Unit mitgegeben.

Also in FormularName ist die Unit1 drin.

:gruebel: Du kannst einer Objektvariable keine Unit zuweisen. Ich gehe einfach mal davon aus, dass du die zur Unit gehörende Form meinst. Dann sollte es so aussehen:
Delphi-Quellcode:
procedure SetTabStops(AForm: TForm);
var
  Compo: TComponent;
begin
   Compo:= AForm.FindComponent('edit1');
   if compo<> nil
   then
   begin
    TWinControl(Compo).TabStop := False;
   end;
end;
Der Aufruf sieht dann so aus:
Delphi-Quellcode:
var
  Formularname: TForm // Das "-name" passt nicht wirklich
begin
  Formularname := Form1;
  SetTabStops(Formularname);
Aber wie gesagt, die Funktion macht als Methode von TForm1 mehr Sinn:
Delphi-Quellcode:
type
  TForm1 = class[...]
  public
    procedure SetTabStops;

[...]

procedure TForm1.SetTabStops;
var
  Compo: TComponent;
begin
   Compo:= FindComponent('edit1');
   if compo<> nil
   then
   begin
    TWinControl(Compo).TabStop := False;
   end;
  // oder eben gleich Edit1.TabStop := false;
end;

[...]

procedure TForm314.DoSomething;
begin
  Form1.SetTabStops;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:08 Uhr.
Seite 1 von 2  1 2      

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