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;