Delphi-PRAXiS :: Das Forum für Fragen zu Delphi
Das Experten Forum für Delphi Programmierer
Hilfe für CodeGear Delphi gibts es hier im Forum
Delphi Quelltexte und Source Codes
 
Delphi-PRAXiS :: Foren-ÜbersichtForen-Übersicht Delphi-PRAXiS Modul-ÜbersichtSite-Map Delphi-PRAXiS durchsuchenSuchen Delphi-PRAXiS Code-LibraryCode-Library Jetzt registrieren!Registrieren Login  
   
 
0
 
Delphi für Win32
Problem mit Object Inspector
Ein Delphi (Win32)-Thema von EWeiss.

Vorheriges Thema anzeigen  |  Nächstes Thema anzeigen
Neuen Beitrag schreiben Auf Beitrag antworten
als PDF-Datei herunterladenThema ausdrucken
 
Delphi-PRAXiS Forum - Übersicht -> VCL / WinForms / Controls
Seite 1 von 2   [ 19 Beiträge ]  Gehe zu Seite 1, 2  Weiter
 
 Autor 
 Nachricht 
 
EWeiss #1|Beitrag #933165Verfasst am: 29.08.2008, 09:08      Titel: Problem mit Object Inspector Antworten mit Zitat
aktives Mitglied
Beiträge: 1.937
angemeldet: 23.08.2006


Sprache: Delphi (Win32)

Hallo

Habe ein problem beim addieren von meinen Controls.
Wenn ich ein Image oder label auf die Form lege wie komme ich dann an das aufgesetzte control ?

So sieht es bisher aus.
Wenn ich auf den Button für den Label oder das Image klicke springe ich in diese Funktion
Delphi-Quellcode: markieren
procedure TMainForm.PaletteStdButtonClick(Sender: TObject);
const
  cClasses: array[0..2] of string = ( '', 'TImage', 'TLabel');

begin
  StickyClass := (GetKeyState(VK_SHIFT) < 0);
  DesignClass := cClasses[TControl(Sender).Tag];

end;

Klicke ich nun auf das Designer Window dann hole ich mir die Class über
Delphi-Quellcode: zusammenfalten | markieren
procedure TMainForm.JvDesignPanelGetAddClass(Sender: TObject; var ioClass: String);

begin
  ioClass := DesignClass;
  if DesignClass <> '' then
    AddControls(TControl(Sender), DesignClass);

  if not StickyClass then
  begin
    DesignClass := '';
  end;

end;

Ist DesignClass mehr als nichts versuche ich das Control dem Object inspector hinzu zu fügen
Delphi-Quellcode: markieren
AddControls(TControl(Sender), DesignClass);


Delphi-Quellcode: zusammenfalten | markieren
procedure TMainForm.AddControls(NewObject: TControl; DisplayName: string);
var
  InspCat: TJvInspectorCustomCategoryItem;
 
begin
  InspCat := TJvInspectorCustomCategoryItem.Create(JvInspector1.Root, nil);
  InspCat.DisplayName := DisplayName;
  InspCat.SortKind := iskNone;
  AddCtrl(InspCat, NewObject);
  InspCat.Expanded := True;

end;

procedure TMainForm.AddCtrl(const Parent: TJvCustomInspectorItem; const Ctrl: TControl);
var
  InspCat: TJvInspectorCustomCategoryItem;

begin
  InspCat := TJvInspectorCustomCategoryItem.Create(Parent, nil);
  InspCat.DisplayName := Ctrl.Name + ': ' + Ctrl.ClassName;

  TJvInspectorPropData.New(InspCat, Ctrl);
end;


Das problem ist nun das er mir nicht die eigenschaften vom Image1 bzw.. Label1 addiert
sondern logischerweise(weil der Sender) das TJvDesignSurface ...

Habe im moment keine idee wo ich die beiden Controls zum TreeView bzw.. den Object Inspector hinzufügen soll.

Wäre schön wenn jemand helfen könnte.
Im Anhang ein Bild. (ala Widget von David)

gruss Emil

[ An diesen Beitrag wurden eine oder mehrere Dateien angehängt. Zum Herunterladen bitte anmelden. ]

 Zuletzt bearbeitet von EWeiss am 29.08.2008, 09:41, insgesamt 1-mal bearbeitet.
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
littleDave #2|Beitrag #933366Verfasst am: 29.08.2008, 18:44      Titel: Re: Problem mit Object Inspector Antworten mit Zitat
aktives Mitglied
Alter: 23
Beiträge: 436
angemeldet: 27.04.2006
Wohnort: München
Delphi 7 Professional

Also in meinem Editor meiner Desktop Widget Engine hab ich es so gelöst:

Zuerst hab ich mal eine Liste, in der alle Komponenten sind, die ich für die Widget-Engine zur Verfügung stelle. Das Grundgerüst sieht folgendermaßen aus:

Delphi-Quellcode: zusammenfalten | markieren
type
  TwgComponentClass = class of TwgComponent; // meine Grundkomponente

  PwgClassListEntry = ^TwgClassListEntry;
  TwgClassListEntry = record
    ClassName   : string;
    ClassType   : TwgComponentClass;
    InPalette   : boolean;
    PaletteEntry: string;
  end;

  TwgClassList = class(TObject)
  private
    FList : TList;
  protected
    function GetCount: integer;
    function FindClassByName(Name: string): TwgComponentClass;
    function FindClassByIndex(index: integer): TwgComponentClass;
    function GetItem(index: integer): PwgClassListEntry;

    function  IndexOf(ClassName: string): integer;
    function  IndexOfClass(aClass: TwgComponentClass): integer;
    procedure Clear;
  public
    constructor Create;
    destructor Destroy; override;

    procedure AddClass(ClassName: string; aClass: TwgComponentClass; InPalette: boolean; PaletteEntry: string);
    function  HasClass(ClassName: string): boolean;
    function  GetClassName(aClass: TwgComponentClass): string;

    property  Items[index: integer] : PwgClassListEntry  read GetItem;
    property  GetClass[Name: string]: TwgComponentClass  read FindClassByName; default;
    property  Count                 : integer            read GetCount;
  end;

var
  // eine globale Variable, die im initialization-Teil der Unit erstellt wird
  wgClassList: TwgClassList


So, jetzt füge ich erst alle verfügbaren Klassen in die Liste hinzu. Beim Label schaut das z.B. so aus:
Delphi-Quellcode: markieren
wgClassList.AddClass(TwgLabel.ClassName, TwgLabel, True, 'Standard');


Im Editor gibt es dann eine einfache Methode, eine neue Klasse zu erstellen:
Delphi-Quellcode: zusammenfalten | markieren
function TWidgetEditor.DoAddClass(ClassName: string; var NewObject: TwgComponent): boolean;
var CompClass: TwgComponentClass;
begin
  CompClass := wgClassList.GetClass[ClassName];
  if CompClass = nil then
     result := False
  else
  begin
    NewObject := CompClass.Create;
    result    := True;
    // Und nun die Klasse bei dir im JvInspector anzeigen
    AddControls(result, 'Irgendwas');
  end;
end;


Ach noch was: Ich verwende nicht TControl als Basis, sondern eine eigene Basisklasse. Daher ist bei mir TwgComponent bei dir TControl

Hoffe das Hilft dir etwas.

Delphi-Quellcode: markieren
<!-- #1-->in case of 1 is 0 do external raise while in public class of object array else repeat until 1 is 0
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
EWeiss #3|Beitrag #933370Verfasst am: 29.08.2008, 19:15      Titel: Re: Problem mit Object Inspector Antworten mit Zitat
aktives Mitglied
Beiträge: 1.937
angemeldet: 23.08.2006


Danke für die Infos Wink

Mein problem ist das addieren zum TreeView sowie zum Object Inpector.
Meine damit das ich nicht an die Eigenschaften herankomme

Hast du diese vorher für deinen Label und Image selber festgelegt?
Steige noch nicht so richtig hinter die Materie.

Copy Paste bringt nichts
da ich im moment noch nicht erkennen kann wie die eigenschaften addiert werden

Aber helfen tut die Info auf jeden fall

gruss Emil

 Zuletzt bearbeitet von EWeiss am 29.08.2008, 19:27, insgesamt 1-mal bearbeitet.
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
littleDave #4|Beitrag #933378Verfasst am: 29.08.2008, 19:30      Titel: Re: Problem mit Object Inspector Antworten mit Zitat
aktives Mitglied
Alter: 23
Beiträge: 436
angemeldet: 27.04.2006
Wohnort: München
Delphi 7 Professional

Ist das Problem, dass du im Objekt-Inspektor nichts siehst oder dass die falsche Komponente hinzugefügt wird? Ich kapier gerade nicht, was jetzt genau das Problem ist. Grübelnd...

Delphi-Quellcode: markieren
<!-- #1-->in case of 1 is 0 do external raise while in public class of object array else repeat until 1 is 0
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
EWeiss #5|Beitrag #933382Verfasst am: 29.08.2008, 19:43      Titel: Re: Problem mit Object Inspector Antworten mit Zitat
aktives Mitglied
Beiträge: 1.937
angemeldet: 23.08.2006


littleDave hat folgendes geschrieben:
Ist das Problem, dass du im Objekt-Inspektor nichts siehst oder dass die falsche Komponente hinzugefügt wird? Ich kapier gerade nicht, was jetzt genau das Problem ist. Grübelnd...


Wenn du einen Label in das Designer Window einfügst
Addierst du doch in der Combo den ClassNamen wgLabel1: TwgLabel
anschließend im TreeView wgLabel1

und füllst dann den Inspector mit den eigenschaften von Label
aligment , Caption usw..

Das ist mein problem weis nicht wie ich an die Eigenschaften komme
bzw.. ob du sie vorher selber festgelegt hast.

EDIT:
Hast du ein ganz einfaches Sample ?
Wo ich sehen kann wie die technic funktioniert ?
bsp: Für einen label ?

gruss Emil

 Zuletzt bearbeitet von EWeiss am 29.08.2008, 19:46, insgesamt 2-mal bearbeitet.
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
littleDave #6|Beitrag #933387Verfasst am: 29.08.2008, 19:55      Titel: Re: Problem mit Object Inspector Antworten mit Zitat
aktives Mitglied
Alter: 23
Beiträge: 436
angemeldet: 27.04.2006
Wohnort: München
Delphi 7 Professional

Also der JvInspector ist schon etwas komplizierter, um ihn mal kurz zu erklären. Der kann sowohl mit RTTI und ohne RTTI benutzt werden. Hier mal ein einfaches Beispiel, um an ein Label in den Inspector zu bekommen (mit RTTI):

Delphi-Quellcode: zusammenfalten | markieren
type
  TForm1 = class(TForm)
    Label1: TLabel; // das Label
    JvInspector1: TJvInspector; // der Inspektor
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    procedure ShowObject(aObj: TObject);
  end;

implementation

procedure TForm1.FormCreate(Sender: TObject);
begin
  ShowObject(Label1);
end;

procedure TForm1.ShowObject(aObj: TObject);
begin
  JvInspector1.Root.Clear; 
  TJvInspectorPropData.New(JvInspector1.Root, aObj); 
end;

Delphi-Quellcode: markieren
<!-- #1-->in case of 1 is 0 do external raise while in public class of object array else repeat until 1 is 0
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
EWeiss #7|Beitrag #933389Verfasst am: 29.08.2008, 20:03      Titel: Re: Problem mit Object Inspector Antworten mit Zitat
aktives Mitglied
Beiträge: 1.937
angemeldet: 23.08.2006


Das heißt es gehen nur Variablen die in dem Object schon enthalten sind ?
Verstehe ich nicht..

Ich möchte ja eigentlich nur werte addieren die für mich von bedeutung sind

Sehe schon das dauert länger als erwartet muss mich da erst einarbeiten. Wink

Danke.
gruss Emil
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
littleDave #8|Beitrag #933401Verfasst am: 29.08.2008, 20:27      Titel: Re: Problem mit Object Inspector Antworten mit Zitat
aktives Mitglied
Alter: 23
Beiträge: 436
angemeldet: 27.04.2006
Wohnort: München
Delphi 7 Professional

Der JvInspector arbeitet mit RTTI. Alle published-Properties von Objekten, die von TPersistent abgeleitet sind, haben RTTI aktiviert. Diese RTTI liest der JvInspector aus und stellt diese dann dar.

Sagen wir mal, du hast eine Klasse:
Delphi-Quellcode: zusammenfalten | markieren
type
  TMyClass = class(TPersistent)
  private
    FBlub : string;
    FHm   : integer;
  public
    property Hm: integer  read FHm write FHm;
  published
    property Blub: string read FBlub write FBlub;
  end;

Wenn du jetzt diese Klassen in JvInspector hineinlädst, wirst du nur die Eigenschaft "Blub" sehen, "Hm" siehst du nicht, da Hm nicht published ist und somit keine RTTI hat.

Aber du kannst die RTTI noch hinzufügen lassen, wenn du eine neue Klasse davon ableitest und die property "Hm" in den Published-Bereich "verschiebst"
Delphi-Quellcode: markieren
type
  TMyObj = class(TMyClass)
  published
    property Hm;
  end;

Wenn du jetzt die neue Klassen in JvInspector hineinlädst, wirst du beide Eingenschaften sehen.

Wenn du jetzt von TLabel nur bestimmte Sachen in den Inspektor laden willst, hab ich auch noch schnell nen Quelltext für dich. Diesen musst du einfach in das obige Beispiel von mir hineinkopieren.

Delphi-Quellcode: zusammenfalten | markieren
uses
  TypInfo;

procedure TForm1.ShowObject(aObj: TObject);
begin
  JvInspector1.Root.Clear; 
  TJvInspectorPropData.New(JvInspector1.Root, aObj, GetPropInfo(aObj, 'Left'));   
  TJvInspectorPropData.New(JvInspector1.Root, aObj, GetPropInfo(aObj, 'Top'));
  TJvInspectorPropData.New(JvInspector1.Root, aObj, GetPropInfo(aObj, 'Align'));
end;

Delphi-Quellcode: markieren
<!-- #1-->in case of 1 is 0 do external raise while in public class of object array else repeat until 1 is 0

 Zuletzt bearbeitet von littleDave am 29.08.2008, 20:28, insgesamt 1-mal bearbeitet.
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
EWeiss #9|Beitrag #933403Verfasst am: 29.08.2008, 20:36      Titel: Re: Problem mit Object Inspector Antworten mit Zitat
aktives Mitglied
Beiträge: 1.937
angemeldet: 23.08.2006


Ja das hilft mir schon mal enorm Wink
Pack mir das mal in ne Form und Teste das ergebnis da versteht man schneller
und sieht vor allem was passiert.

gruss Emil
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
littleDave #10|Beitrag #933434Verfasst am: 29.08.2008, 21:49      Titel: Re: Problem mit Object Inspector Antworten mit Zitat
aktives Mitglied
Alter: 23
Beiträge: 436
angemeldet: 27.04.2006
Wohnort: München
Delphi 7 Professional

Hier mal meine letzten Beiträge zusammengefasst.

[ An diesen Beitrag wurden eine oder mehrere Dateien angehängt. Zum Herunterladen bitte anmelden. ]

Delphi-Quellcode: markieren
<!-- #1-->in case of 1 is 0 do external raise while in public class of object array else repeat until 1 is 0
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
EWeiss #11|Beitrag #933449Verfasst am: 29.08.2008, 22:34      Titel: Re: Problem mit Object Inspector Antworten mit Zitat
aktives Mitglied
Beiträge: 1.937
angemeldet: 23.08.2006


littleDave hat folgendes geschrieben:
Hier mal meine letzten Beiträge zusammengefasst.


Danke für deine mühe.

EDIT:
Das ist erklärlich aber mein problem bleibt bestehen
Ich komme nicht an das Object (Label) was ich auf die Form gepackt habe.
Da der letzte Sender das JvDesignSurface ist.

Kann es sein das ich mich nicht exakt genug ausdrücke ?

Wenn ich auf mein Label klicke rechts oben der Button wie bei (Widget)
Dann übergebe ich die Classe abhängig vom index der im Tag deklariert ist.. in dem fall die 2

Delphi-Quellcode: markieren
DesignClass := cClasses[TControl(Sender).Tag];

Also das Obj ist nun ein TLabel ist auch richtig bis hierher..
Das DesignPanel verwendet das Event 'JvDesignPanelGetAddClass'
Delphi-Quellcode: markieren
procedure TMainForm.JvDesignPanelGetAddClass(Sender: TObject; var ioClass: String);

Sobald ich nun das obj TLabel auf das DesignPanel geknallt habe ist das obj nicht mehr gültig
da es nun nach der erstellung den Wert 'JvDesignSurface' übernommen hat da der Sender der
die funktion 'JvDesignPanelGetAddClass' ausführt nicht das TLabel ist sondern das DesignPanel.

Wenn ich nun das Obj TLabel zum Inspector addieren will geht das aber hier nicht mehr da es ungültig ist.
Vielleicht versteht man nun besser was ich meine.

gruss Emil

 Zuletzt bearbeitet von EWeiss am 29.08.2008, 23:06, insgesamt 3-mal bearbeitet.
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
littleDave #12|Beitrag #933458Verfasst am: 29.08.2008, 23:56      Titel: Re: Problem mit Object Inspector Antworten mit Zitat
aktives Mitglied
Alter: 23
Beiträge: 436
angemeldet: 27.04.2006
Wohnort: München
Delphi 7 Professional

Ach das JvDesignPanel ist das Problem Shocked

Zitat:
Kann es sein das ich mich nicht exakt genug ausdrücke ?

Ich glaub wir haben beide aneinander vorbeigeredet Stupid

Ich nehme an, du arbeitest dich mit Hilfe des Beispiels durch die Komponente. Also soweit ich das JvDesignPanel nach 10 Minuten verstanden habe (ich arbeite nicht damit, da bei mir nichts von TControl abgeleitet ist):

Beim Starten der Anwendung muss man dem Designer erst sagen, welche Komponenten überhaupt unterstützt werden sollen. Dies geschieht im Initialization-Teil der Unit:
Delphi-Quellcode: markieren
initialization
  RegisterClass(TButton);
  RegisterClass(TLabel);
  RegisterClass(TPanel);
  RegisterClass(TImage);


So, sobald eine neue Komponente hinzugefügt werden soll, wird das "JvDesignPanelGetAddClass" - Event aufgerufen. Jetzt ist es so: wenn eine neue Komponente hinzugefügt werden soll, dann musst du den Klassennamen im Parameter var ioClass: String speichern. Wenn dieser String leer bleibt, dann wird auch keine neue Klasse erstellt. Zu diesem Zeitpunkt gibt es das neue Objekt noch nicht, da das JvDesignPanel ja noch nicht mal weiß, welcher Klassentyp überhaupt erstellt werden soll. So, nachdem das Event fertig ist, wird die neue Klasse erstellt - intern im Designer. Um dann auf eine Klasse zuzugreifen, musst du wahrscheinlich auf die Property Surface zugreifen und dich da irgendwie durchhangeln. Du kannst also in diesem Event NICHT auf das erstelle Objekt zugreifen, da es noch nicht existiert. Wahrscheinlich gibt es ein Event mit dem Namen (OnItemSelected) oder so ähnlich. Dort wirst du entweder das Item direkt als Parameter übergeben bekommen (zu 99.99999% ist es nicht Sender: TObject), oder es gibt eine Property "Selected" oder so.

Delphi-Quellcode: markieren
<!-- #1-->in case of 1 is 0 do external raise while in public class of object array else repeat until 1 is 0
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
EWeiss #13|Beitrag #933463Verfasst am: 30.08.2008, 00:38      Titel: Re: Problem mit Object Inspector Antworten mit Zitat
aktives Mitglied
Beiträge: 1.937
angemeldet: 23.08.2006


Ja ! Denke wir sind auf den richtigen weg..
Ist manchmal schwierig schriftlich etwas rüberzubringen Wink

Ja beim Initialisieren der MainForm .. werden die Komponenten registriert.

Delphi-Quellcode: zusammenfalten | markieren
initialization
  ADate := Now;

  TJvInspectorAlignItem.RegisterAsDefaultItem;
  TJvInspectorAnchorsItem.RegisterAsDefaultItem;
  TJvInspectorColorItem.RegisterAsDefaultItem;
  TJvInspectorTImageIndexItem.RegisterAsDefaultItem;

  RegisterClass(TImage);
  RegisterClass(TLabel);


Erst mal nur die zwei.. Smile

Sobald ich auf das Panel klicke bekommt in
Delphi-Quellcode: markieren
procedure TMainForm.JvDesignPanelGetAddClass(Sender: TObject; var ioClass: String);

ioClass den Wert TLabel als string übergeben ist auch richtig so.

Danach addiere ich das neue Objekt in der gleichen funktion
Delphi-Quellcode: markieren
if DesignClass <> '' then
    AddControls(TControl(Sender), DesignClass);


Delphi-Quellcode: zusammenfalten | markieren
procedure TMainForm.AddControls(aCtrl: TControl; DisplayName: string);
var
  InspCat: TJvInspectorCustomCategoryItem;

begin
  InspCat := TJvInspectorCustomCategoryItem.Create(JvInspector1.Root, nil);
  InspCat.DisplayName := DisplayName;
  JvInspector1.Root.SortKind := iskNone;
  AddCtrl(InspCat, aCtrl);
  InspCat.Expanded := True;

end;


Delphi-Quellcode: zusammenfalten | markieren
procedure TMainForm.AddCtrl(const Parent: TJvCustomInspectorItem; const Ctrl: TControl);
var
  InspCat: TJvInspectorCustomCategoryItem;

begin
  InspCat := TJvInspectorCustomCategoryItem.Create(Parent, nil);
  InspCat.DisplayName := Ctrl.Name + ': ' + Ctrl.ClassName;

  TJvInspectorPropData.New(InspCat, Ctrl);
end;

Und hier ist das problem wie schon gesagt ..
Er addiert zwar das richtige Caption TLabel addiert aber als Parent TjvDesignSurface

muss mal schaun ob ich mit den Tips von dir da was machen kann.

gruss Emil
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
littleDave #14|Beitrag #933465Verfasst am: 30.08.2008, 00:50      Titel: Re: Problem mit Object Inspector Antworten mit Zitat
aktives Mitglied
Alter: 23
Beiträge: 436
angemeldet: 27.04.2006
Wohnort: München
Delphi 7 Professional

EWeiss hat folgendes geschrieben:
[...]
Sobald ich auf das Panel klicke bekommt in
Delphi-Quellcode: markieren
procedure TMainForm.JvDesignPanelGetAddClass(Sender: TObject; var ioClass: String);

ioClass den Wert TLabel als string übergeben ist auch richtig so.

Danach addiere ich das neue Objekt in der gleichen funktion <--- Das ist der Fehler
Delphi-Quellcode: markieren
if DesignClass <> '' then
    AddControls(TControl(Sender), DesignClass);


Ich hab dir doch geschrieben, dass das neue Objekt während dem Aufruf dieser Routine NOCH NICHT existiert - daher kannst du es auch nocht nicht in den Object-Inspector hinzufügen. Sender hat eine ganz andere Bedeutung - das ist immer das Objekt, welches das Event auslöst - in diesem Fall TJvDesignSurface

Delphi-Quellcode: markieren
<!-- #1-->in case of 1 is 0 do external raise while in public class of object array else repeat until 1 is 0
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
EWeiss #15|Beitrag #933501Verfasst am: 30.08.2008, 01:04      Titel: Re: Problem mit Object Inspector Antworten mit Zitat
aktives Mitglied
Beiträge: 1.937
angemeldet: 23.08.2006


littleDave hat folgendes geschrieben:
EWeiss hat folgendes geschrieben:
[...]
Sobald ich auf das Panel klicke bekommt in
Delphi-Quellcode: markieren
procedure TMainForm.JvDesignPanelGetAddClass(Sender: TObject; var ioClass: String);

ioClass den Wert TLabel als string übergeben ist auch richtig so.

Danach addiere ich das neue Objekt in der gleichen funktion <--- Das ist der Fehler
Delphi-Quellcode: markieren
if DesignClass <> '' then
    AddControls(TControl(Sender), DesignClass);


Ich hab dir doch geschrieben, dass das neue Objekt während dem Aufruf dieser Routine NOCH NICHT existiert - daher kannst du es auch nocht nicht in den Object-Inspector hinzufügen. Sender hat eine ganz andere Bedeutung - das ist immer das Objekt, welches das Event auslöst - in diesem Fall TJvDesignSurface


Lieber David deshalb mußt du nicht schreien.. Wink
Habe es doch nur nochmal zur vervollständigung auseinandergelegt das
man genau die reihenfolge sieht warum und wieso das problem auftritt.
Könnte ja auch für andere nützlich sein die vielleich mal vor dem gleichen problem stehen.

Habe verstanden das es noch nicht existiert.
Deshalb ja auch !!!
Zitat:
muss mal schaun ob ich mit den Tips von dir da was machen kann.

Finde aber im moment auch nicht das Event wo ich nach dem erstellen des Label
die Komponente im Inspector addieren kann.

Bin da noch am suchen Smile

gruss Emil

 Zuletzt bearbeitet von EWeiss am 30.08.2008, 01:07, insgesamt 1-mal bearbeitet.
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
Anzeige-Optionen:    
 
Delphi-PRAXiS Forum - Übersicht -> VCL / WinForms / Controls Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 2   [ 19 Beiträge ]  Gehe zu Seite 1, 2  Weiter
 
  Neuen Beitrag schreiben Auf Beitrag antworten
als PDF-Datei herunterladenThema ausdrucken
 
   
Gehe zu:  
Du darfst keine Beiträge in dieses Forum schreiben.
Du darfst auf Beiträge in diesem Forum nicht antworten.
Du darfst Deine Beiträge in diesem Forum nicht bearbeiten.
Du darfst Deine Beiträge in diesem Forum nicht löschen.
Du darfst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten.
Du kannst Dateien in diesem Forum nicht herunterladen.


Impressum / Kontakt
Allgemeine Geschäftsbedingungen
Verhaltenskodex & FAQ

Delphi-PRAXiS :: Das Forum für Delphi-Programmierer
Das Experten Forum für Delphi ProgrammiererHilfe für Borland Delphi gibts es hier im ForumDelphi Quelltexte und Source CodesDelphi-PRAXiS :: Das Forum für DelphiWindows APIInternet und NetzwerkeVCL und Datenbanken
 

Delphi-PRAXiS V.2005 III
© 2002-2009 by Daniel R. Wolf
powered by phpBB © phpBB Group

Impressum / Kontakt Allgemeine Geschäftsbedingungen