Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Objeckinspektor PropertyEigenschaften (Datei öffnen) (https://www.delphipraxis.net/8390-objeckinspektor-propertyeigenschaften-datei-oeffnen.html)

Taladan 3. Sep 2003 16:08


Objeckinspektor PropertyEigenschaften (Datei öffnen)
 
Ich habe jetzt verschiedene Propertys meinen CustomGraphicControl hinzugefügt. Ich möchte jedoch, wie bei einen TImage (da es sich hier um ein ImageModul handelt) bei der Property, wo man eine Datei auswählt, das sich dort ein Fenster öffnet und man dort dann die Datei auswählen kann (mit vorauswahl für .bmp). Wie kann ich das bewerkstelligen.

Leuselator 3. Sep 2003 16:29

Re: Objeckinspektor PropertyEigenschaften (Datei öffnen)
 
such mal im Delphi-Pfad nach
'PicEdit.pas'
wenn Du die Findest, kannst Du bei den Meistern direkt abschreiben ;)

Taladan 4. Sep 2003 11:13

Re: Objeckinspektor PropertyEigenschaften (Datei öffnen)
 
Gibt es bei mir leider net.

APP 4. Sep 2003 12:06

Re: Objeckinspektor PropertyEigenschaften (Datei öffnen)
 
Hallo, ist bei mir zwar schon eine Weile her, dass ich mir eine
Komponente selber machte, aber a bisserl was hab ich für Dich:

Bspl. anhand eines IniFile OpenDialogs

Delphi-Quellcode:
...
USES
dsgnintf; // bis Delphi 5 !!
...

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;

PROCEDURE Register;

IMPLEMENTATION

...

PROCEDURE Register;
BEGIN
  RegisterPropertyEditor(TypeInfo(STRING), TFlappError, 'LogFileName',
    TLogFileNameProperty);
...
  RegisterComponents('APP', [TFlappError]); // die Komponente selbst
END;
...
// --------------------------- LOG File ------------------------------------

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;
und

Delphi-Quellcode:
  TFlappError = CLASS(TComponent)                // Hauptklasse FlappError
    FFileName: STRING;
  ...
  PUBLISHED                                      
  ...
    PROPERTY LogFileName: STRING READ FFileName WRITE FFileName;
  END;

p.s.
obigen Code habe ich aus meinem Projekt kopiert, und ist so sicher
nicht lauffähig, da ich die Kompo für D7 geschrieben habe. Ab Delphi 6
ist es Vorschrift, dass die Runtime- und die Designtime Teile einer
Kompo in getrennten Dateien stehen müssen (aus lizenzrechtlichen
Gründen, wegen der Designtime Editoren)

p.p.s.
Auch kann ich nicht garantieren das alle Befehle auch in D4 vorhanden sind.
p.p.p.s.
Aber als Anstoß könnte der Code ja taugen ...

Taladan 4. Sep 2003 20:06

Re: Objeckinspektor PropertyEigenschaften (Datei öffnen)
 
thx

JoachimQ 2. Nov 2003 20:56

Re: Objeckinspektor PropertyEigenschaften (Datei öffnen)
 
Hallo!

Ich habe Delphi 6 Personal.
Ich wollte mal fragen, wie den das TPropertyAttributes definiert ist.
Also Type TPropertyAttributes= ...

Joachim


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:19 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