AGB  ·  Datenschutz  ·  Impressum  







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

Code in andere Unit auslagern

Ein Thema von Jerry · begonnen am 3. Nov 2005 · letzter Beitrag vom 3. Nov 2005
Antwort Antwort
Seite 1 von 2  1 2      
Jerry

Registriert seit: 24. Feb 2005
Ort: Schweiz/Thurgau
138 Beiträge
 
Delphi 2010 Professional
 
#1

Code in andere Unit auslagern

  Alt 3. Nov 2005, 13:31
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!
  Mit Zitat antworten Zitat
franktron

Registriert seit: 11. Nov 2003
Ort: Oldenburg
1.446 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#2

Re: Code in andere Unit auslagern

  Alt 3. Nov 2005, 13:42
Ganz einfach

Delphi-Quellcode:
Procedure LoadTabStop(form : TForm);
...
Frank
Tux sein Lieblingsquellcode
While anzfische<TuxSatt do begin
Fisch:=TFisch.Create; Tux.EssenFisch(Fisch); Fisch.Free;inc(anzfische); end;
  Mit Zitat antworten Zitat
Jerry

Registriert seit: 24. Feb 2005
Ort: Schweiz/Thurgau
138 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Code in andere Unit auslagern

  Alt 3. Nov 2005, 13:51
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...
  Mit Zitat antworten Zitat
franktron

Registriert seit: 11. Nov 2003
Ort: Oldenburg
1.446 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#4

Re: Code in andere Unit auslagern

  Alt 3. Nov 2005, 13:54
Ahh tschuldige mein Fehler so hab ich das gemacht

Delphi-Quellcode:
procedure Felder (c : TComponent);
Begin
  With c do
  Begin
    FindComponent(xxx)
  End;
End;
Frank
Tux sein Lieblingsquellcode
While anzfische<TuxSatt do begin
Fisch:=TFisch.Create; Tux.EssenFisch(Fisch); Fisch.Free;inc(anzfische); end;
  Mit Zitat antworten Zitat
Jerry

Registriert seit: 24. Feb 2005
Ort: Schweiz/Thurgau
138 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Code in andere Unit auslagern

  Alt 3. Nov 2005, 14:04
Sorry check ich jetzt nicht ganz...?

kannst du dies vielleicht genauer erörtern... danke....
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#6

Re: Code in andere Unit auslagern

  Alt 3. Nov 2005, 14:05
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 .
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Jerry

Registriert seit: 24. Feb 2005
Ort: Schweiz/Thurgau
138 Beiträge
 
Delphi 2010 Professional
 
#7

Re: Code in andere Unit auslagern

  Alt 3. Nov 2005, 14:09
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...
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#8

Re: Code in andere Unit auslagern

  Alt 3. Nov 2005, 14:21
Zitat von Jerry:
// Formularname ist aber eine andere Unit
? Ist "Forumarname" jetzt eine Variable oder eine Unit? Und wenn ersteres: ein Objekt oder ein String? Und wenn davon letzteres (): So kann das nicht gehen, wann, wo und warum füllst du diese Variable?
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Jerry

Registriert seit: 24. Feb 2005
Ort: Schweiz/Thurgau
138 Beiträge
 
Delphi 2010 Professional
 
#9

Re: Code in andere Unit auslagern

  Alt 3. Nov 2005, 14:24
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.
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#10

Re: Code in andere Unit auslagern

  Alt 3. Nov 2005, 15:01
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.
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;
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 12:17 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