Einzelnen Beitrag anzeigen

raiguen
(Gast)

n/a Beiträge
 
#19

Re: kann man alle wichtigen Funktionen auslagern ?

  Alt 21. Mär 2007, 11:25
Zitat von Christoph Frank:
In der Unit1 von Form1 befindet sich ein Edit1-Feld.
In MeinUnit ist die procedure InaktivMachen in der ich Edit1.Enabled := false; setzen möchte.
MeinUnit kennt natürlich das Edit1-Feld aus Form1-Unit1 nicht und da liegt mein Problem.
...
Wenn du eine allgemein gültige Prozedure haben möchtest,dann so in etwa:
Delphi-Quellcode:
procedure TMeinUnit.InaktivMachen(aEdit: TEdit);
begin
  aEdit.Enabled := not aEdit.Enabled; //--nur als Beispiel
end;
//-- Aufruf aus JEDER x-beliebigen Form mit
   InaktivMachen(Edit1);
DAS hier:
Zitat von Matze:
Hi,

du musst lediglich in den uses ein Formular (hier: Form1) einbinden und kannst dann mit

Form1.Edit.Enabled := true; darauf zugreifen.
kannst du getrost vergessen! Warum? Wenn du eine allgemeingültige Unit schreiben willst, dann wäre es aus meiner Sicht absoluter Blödsinn, sämtliche 'Quell'Units alá Form1, FormXYZ in dies uses-Klausel reinzuschreiben! Was passiertr wohl, wenn du ein neues Projekt hast und deine allgemein gültige Unit mit einbindest? KLaro-> der Compiler meckert die nicht gefundenden Units in der uses-KLausel an
Anderes Beispiel, wo du Unit-übergreifend (um das mal so zu nennen) MeinUnit einsetzen kannst:
Delphi-Quellcode:
{geht zur nächsten Control, wenn ENTER gedrückt wurde}
{--Aufruf bspw. im EditKeyPress: p_TabOnEnter(Self,Key) ->Self ist autom. die Form auf der sich das Edit befindet}
procedure p_TabOnEnter(const AForm: TForm; var AKey: Char);
begin
  if AKey = #13 then
    if AForm <> nil then
      begin
        AForm.Perform(WM_NextDlgCtl, 0, 0);
        AKey := #0;
  end;
end;
  Mit Zitat antworten Zitat