![]() |
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:
Wie kann ich diesen Code in eine andere Unit auslagern, damit ich diesen Code nicht redundant anlegen muss?
var
Compo: TComponent; begin Compo:= FindComponent('edit1'); if compo<> nil then begin TWinControl(Compo).TabStop := False; end; end; 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! |
Re: Code in andere Unit auslagern
Ganz einfach
Delphi-Quellcode:
Procedure LoadTabStop(form : TForm);
... |
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... |
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; |
Re: Code in andere Unit auslagern
Sorry check ich jetzt nicht ganz...?
kannst du dies vielleicht genauer erörtern... danke.... |
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: .
|
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... |
Re: Code in andere Unit auslagern
Zitat:
|
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. |
Re: Code in andere Unit auslagern
Zitat:
Delphi-Quellcode:
Der Aufruf sieht dann so aus:
procedure SetTabStops(AForm: TForm);
var Compo: TComponent; begin Compo:= AForm.FindComponent('edit1'); if compo<> nil then begin TWinControl(Compo).TabStop := False; end; end;
Delphi-Quellcode:
Aber wie gesagt, die Funktion macht als Methode von TForm1 mehr Sinn:
var
Formularname: TForm // Das "-name" passt nicht wirklich begin Formularname := Form1; SetTabStops(Formularname);
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. |
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