Announcement

Collapse
No announcement yet.

Form als Parameter an Function übergeben.

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Form als Parameter an Function übergeben.

    <p>Ich habe folgendes Problem. Ich Übergebe mein Form beim Create an die
    Funktion GetRegFormSettings. Diese liest dann die Werte für</p>
    <p>Height, Width, Top, Left und Windowstate aus der Registry aus weist sie dem
    Form zu und gibt das Form zurück. Bei der Größe klappt das auch wunderbar.
    Nur der Windowstate wird nach Übergabe nicht verändert. Bis zur Übergabe ist
    der Wert korrekt.</p>
    <p>Hier der Code:</p>
    <p>{Die Prozedur setzt die Eigenschaften Windowstate, Top, Left, Height und Width<br>
    auf die in der Registry hinterlegten Werte: Als Parameter werden das Form und der<br>
    Registrierungspfad übergeben.}<br>
    function GetRegFormSettings(Form: TCustomForm; sPfad: String):TCustomForm;<br>
    var<br>
    iHeight, iWidht, iTop, iLeft, iWindowState: Integer;<br>
    begin<br>
    &nbsp;&nbsp;&nbsp; //Windowstate<br>
    &nbsp;&nbsp;&nbsp; iWindowState:= StrToInt(GetRegistryValue(sPfad, 'Fensterstatus'));<br>
    &nbsp;&nbsp;&nbsp; if iWindowState = 1 then<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Form.WindowState:= wsMaximized<br>
    &nbsp;&nbsp;&nbsp; else<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Form.WindowState:= wsNormal;<br>
    &nbsp;&nbsp;&nbsp; //Height<br>
    &nbsp;&nbsp;&nbsp; iHeight:= StrToInt(GetRegistryValue(sPfad, 'Fensterhöhe'));<br>
    &nbsp;&nbsp;&nbsp; if iHeight &lt;> 0 then<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Form.Height:= iHeight;<br>
    &nbsp;&nbsp;&nbsp; //Widht<br>
    &nbsp;&nbsp;&nbsp; iWidht:= StrToInt(GetRegistryValue(sPfad, 'Fensterbreite'));<br>
    &nbsp;&nbsp;&nbsp; if iWidht &lt;> 0 then<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Form.Width:= iWidht;<br>
    &nbsp;&nbsp;&nbsp; //Top<br>
    &nbsp;&nbsp;&nbsp; iTop:= StrToInt(GetRegistryValue(sPfad, 'Abstand oben'));<br>
    &nbsp;&nbsp;&nbsp; if iTop &lt;> 0 then<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Form.Top:= iTop;<br>
    &nbsp;&nbsp;&nbsp; //Left<br>
    &nbsp;&nbsp;&nbsp; iLeft:= StrToInt(GetRegistryValue(sPfad, 'Abstand links'));<br>
    &nbsp;&nbsp;&nbsp; if iLeft &lt;> 0 then<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Form.Left:= iLeft;<br>
    &nbsp;&nbsp;&nbsp; Result:= Form;<br>
    end;<br>
    </p>
    <p>{Die Funktion liefert den Stringwert eines Schlüssels<br>
    aus der Registry}<br>
    function GetRegistryValue(sPfad, sKey: string):string;<br>
    var<br>
    R: TRegistry;<br>
    begin<br>
    &nbsp;&nbsp;&nbsp; R:=TRegistry.Create;<br>
    &nbsp;&nbsp;&nbsp; if R.OpenKeyReadOnly(sPfad) then<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; begin<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n bsp;&nbsp;&nbsp; if R.ValueExists(sKey) then<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    Result := R.ReadString(sKey)<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n bsp;&nbsp;&nbsp; else<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    Result := '';<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    R.CloseKey;<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end<br>
    &nbsp;&nbsp;&nbsp; else<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Result := '';<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R.Free;<br>
    end;</p>
Working...
X