AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Bei TPropertyEditor.Edit Eigensch. der Kompo lesen/schreiben
Thema durchsuchen
Ansicht
Themen-Optionen

Bei TPropertyEditor.Edit Eigensch. der Kompo lesen/schreiben

Ein Thema von APP · begonnen am 10. Mär 2003 · letzter Beitrag vom 11. Mär 2003
Antwort Antwort
Benutzerbild von APP
APP

Registriert seit: 24. Feb 2003
Ort: Graz (A)
705 Beiträge
 
Delphi 7 Enterprise
 
#1

Bei TPropertyEditor.Edit Eigensch. der Kompo lesen/schreiben

  Alt 10. Mär 2003, 19:21
Hallo,
ich habe meine Komponente brav (nach Jeff Overcash What ever happened to Proxies.pas?) in ein Design- und Runtime-Package aufgeteilt, und (fast) alles klappt Wunderbar.

Ich habe 2 Property-Editoren, einmal für einen SaveDialog für Ini-Files und einmal für ein Log-File:

Delphi-Quellcode:
UNIT FlappErrorReg;
TYPE
   TLogFileNameProperty = CLASS(TPropertyEditor)
      FUNCTION AllEqual: boolean; OVERRIDE;
      PROCEDURE Edit; OVERRIDE;
      FUNCTION GetAttributes: TPropertyAttributes; OVERRIDE;
      FUNCTION GetValue: STRING; OVERRIDE;
      PROCEDURE SetValue(CONST Value: STRING); OVERRIDE;
   END;
   TIniFileNameProperty = CLASS(TPropertyEditor)
      FUNCTION AllEqual: boolean; OVERRIDE;
      PROCEDURE Edit; OVERRIDE;
      FUNCTION GetAttributes: TPropertyAttributes; OVERRIDE;
      FUNCTION GetValue: STRING; OVERRIDE;
      PROCEDURE SetValue(CONST Value: STRING); OVERRIDE;
   END;
ich habe sie registriert:

Delphi-Quellcode:
   RegisterPropertyEditor(TypeInfo(STRING), TFlappError, 'LogFileName',
      TLogFileNameProperty);
   RegisterPropertyEditor(TypeInfo(STRING), TFlappError, 'IniFileName',
      TIniFileNameProperty);
wenn ich nun im Objektinspektor auf die jeweilige Eigenschaft klicke, öffnet sich der jeweilige FileSaveDlg.

Nun möchte ich aber in einer Dialog-Prozedur bestimmte Eigenschaften meiner Komponente lesen bzw. schreiben, aber irgendwie habe ich da einen Knoten:

(Beide Klassen sind gleich, nur einmal *.log einmal *.ini)

Delphi-Quellcode:
FUNCTION TLogFileNameProperty.AllEqual: boolean;
VAR
   FirstVal : STRING;
   i : Integer;
BEGIN
   FirstVal := GetStrValue;
   Result := True;
   i := 1;
   WHILE Result AND (i < PropCount) DO
      BEGIN
         Result := Result AND (GetStrValueAt(i) = FirstVal);
         Inc(i);
      END;
END;

PROCEDURE TLogFileNameProperty.Edit;
VAR
   Dlg : TOpenDialog;
BEGIN
   Dlg := TOpenDialog.Create(Application);
   TRY
      WITH Dlg DO
         BEGIN
            Dlg.Filter := 'Logfile (*.log)|*.log|Textfile (*.txt)|*.txt|all Files|*.*';
            Dlg.DefaultExt := '*.log';
            Title := 'Logfile for ' + TComponent(GetComponent(0)).Name;
            FileName := Value;
            IF Execute THEN Value := FileName;
         END;
   FINALLY
      FreeAndNil(Dlg);
   END
END;

FUNCTION TLogFileNameProperty.GetAttributes: TPropertyAttributes;
BEGIN
   Result := [paDialog]
END;

FUNCTION TLogFileNameProperty.GetValue: STRING;
BEGIN
   Result := GetStrValue;
END;

PROCEDURE TLogFileNameProperty.SetValue(CONST Value: STRING);
BEGIN
   SetStrValue(Value);
END;
Ich möchte nun in PROCEDURE TLogFileNameProperty.Edit

1) die Eigenschaft InIFileEnabled (Boolean) von meiner Komponente lesen und
2) die Eigenschaft LogFileName für die es auch einen Propertyeditor (siehe oben) gibt schreiben (nur in bestimmten Fällen, sonst natürlich nur über den eigenen Propertyeditor)

Ich hoffe es kann mir jemand helfen meinen Konten zu lösen
Armin P. Pressler

BEGIN
...real programmers are using C/C++ - smart developers Delphi;
END;
  Mit Zitat antworten Zitat
Benutzerbild von APP
APP

Registriert seit: 24. Feb 2003
Ort: Graz (A)
705 Beiträge
 
Delphi 7 Enterprise
 
#2

Das lesen ist gelöst!

  Alt 11. Mär 2003, 07:26
Das lesen hab ich jetzt,
ich vergaß wohl eine Kleinigkeit


Delphi-Quellcode:
WITH Component AS TFlappError DO
  BEGIN
    IniFileName := FileName; // jetzt kann ich die Eigenschaft lesen!!!
  END;

Auf diesem Wege kann ich auch schreiben, allerdings aktualisiert der Objektinspektor den Wert nicht, erst wenn ich mit der Maus auf die Eigenschaft klicke wird der Wert dargestellt.

Bin für jede Hilfe dankbar
Armin P. Pressler

BEGIN
...real programmers are using C/C++ - smart developers Delphi;
END;
  Mit Zitat antworten Zitat
Benutzerbild von APP
APP

Registriert seit: 24. Feb 2003
Ort: Graz (A)
705 Beiträge
 
Delphi 7 Enterprise
 
#3
  Alt 11. Mär 2003, 07:43
Jetzt habe ich auch das Zauberwort für das Aktualisieren des Objektinspektors gefunden!

Designer.Modified; Ich hoffe trotzdem, jemand kann mir sagen ob ich richtig liege, auch wenn alles zu Funktionieren scheint
Armin P. Pressler

BEGIN
...real programmers are using C/C++ - smart developers Delphi;
END;
  Mit Zitat antworten Zitat
Antwort Antwort


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 20:59 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