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 Button hinzufügen JInspector (https://www.delphipraxis.net/120262-button-hinzufuegen-jinspector.html)

EWeiss 8. Sep 2008 10:23


Button hinzufügen JInspector
 
Weiss jemand wie ich im JInspector einen Button hinzufügen kann ?
Unter dem eintrag Picture im Image Control ist es nicht mögich ein Bild einzuladen.

gruss Emil

jbg 8. Sep 2008 11:20

Re: Button hinzufügen JInspector
 
Das hier habe ich mal schnell zusammengeschrieben (=zusammenkopiert)
Delphi-Quellcode:
type
  TJvInspectorPictureItem = class(TJvCustomInspectorItem)
  protected
    function GetDisplayValue: string; override;
    procedure Edit; override;
  public
    constructor Create(const AParent: TJvCustomInspectorItem; const AData: TJvCustomInspectorData); override;
  end;


constructor TJvInspectorPictureItem .Create(const AParent: TJvCustomInspectorItem;
  const AData: TJvCustomInspectorData);
begin
  inherited Create(AParent, AData);
  Flags := Flags + [iifEditButton, iifEditFixed];
end;

function TJvInspectorPictureItem.GetDisplayValue: string;
begin
  if TPicture(Data.AsOrdinal).IsEmpty then
    Result := '(kein Bild)'
  else
    Result := '(Bild)';
end;

procedure TJvInspectorMacroItem.Edit;
var
  Pic: TPicture;
begin
  Pic := TPicture(Data.AsOrdinal);
  ShowPictureEditor(Pic);
end;


initialization
  TJvCustomInspectorData.ItemRegister.Add(TJvInspectorTypeInfoRegItem.Create(TJvInspectorPictureItem , TypeInfo(TPicture)));
end.

EWeiss 8. Sep 2008 11:35

Re: Button hinzufügen JInspector
 
@Andreas danke für die Infos
Habe jetzt den Code nicht studiert möchte aber mal zeigen wie ich den Inspector fülle.

Delphi-Quellcode:
        UIObject.ShowSelProperties(FInspector,aCtrl,
          ['Autosize' ,'Width', 'Height', 'Picture'], 'Background Picture');
Delphi-Quellcode:
procedure TCAVEUIObject.ShowSelProperties(Inspector: TJvInspector;
  aObj: TObject; Props: array of string; NodeText: string);
var
  i      : integer;
  Category: TJvInspectorCustomCategoryItem;

begin
  Inspector.Root.Clear;

  Category := TJvInspectorCustomCategoryItem.Create(Inspector.Root, nil);
  Category.DisplayName := NodeText;
  Inspector.Root.SortKind := iskNone;

  for i:=Low(Props) to High(Props) do
    TJvInspectorPropData.New(Category, aObj, GetPropInfo(aObj, Props[i]));

  Category.Expanded := True;
end;
Es werden also vom TImage nur die oben übergebenen Eigenschaften übergeben.
Di eigenschaft Picture ist dann vorhanden was mir fehlt ist hinter dieser eigenschaft ein Button
mit dem ich einen Dialog aufrufen kann um ein bild auswählen zu können.

Werd mir dein Beispiel nochmal genau anschauen .. denke aber nur um einen Button zu adddieren
scheint mir das recht viel an Code.. oder ich habe mich wiedermal nicht richtig ausgedrückt ;)

EDIT:
Bei der Initialisierung registriere ich ja schon die defaulteigenschaften
Delphi-Quellcode:
TJvInspectorTImageIndexItem.RegisterAsDefaultItem;
Könntest du mir bitte einen Link geben woher du diese Infos hast ?

ShowPictureEditor(Pic); >>>> nicht vorhanden
Eigenschaft IsEmpty nicht vorhanden bei TPicture
FUnktion Edit .. auch nicht von TJvInspectorMacroItem.Edit
Data.AsOrdina gibt es auch nicht..

gruss Emil

jbg 8. Sep 2008 16:57

Re: Button hinzufügen JInspector
 
Zitat:

Zitat von EWeiss
Könntest du mir bitte einen Link geben woher du diese Infos hast ?

Ich habe einfach die JvInspExtraEditors.pas geöffnet und dort etwas gestöbert.

Zitat:

ShowPictureEditor(Pic); >>>> nicht vorhanden
Liegt wohl daran, dass du die selbst schreiben musst.

Zitat:

Eigenschaft IsEmpty nicht vorhanden bei TPicture
Ich habe das einfach mal so heruntergetippt. Das musst du einfach durch "Pic.Graphic = nil" ersetzen

Zitat:

FUnktion Edit .. auch nicht von TJvInspectorMacroItem.Edit
Data.AsOrdina gibt es auch nicht..
Ich nutze die JVCL 3.34 hier.

EWeiss 8. Sep 2008 17:16

Re: Button hinzufügen JInspector
 
Danke dann muss ich mal schaun..
traurig das es nicht mal ne Anleitung zu der Komponente gibt.

Benutze auch die 3.34

EDIT:
Nach kleinen änderungen was die Classen betrifft funktioniert es jetzt prächtig
mit den einfügen von Button.

gruss Emil


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