![]() |
Tutorial für JVInspector gesucht
Hallo @all!
Ich möchte gerne den JVInspector aus den Jedis einsetzen. Allerdings stehe ich auch nach Studium der Beispiele noch ziemlich auf dem Schlauch. Kennt jemand ein entsprechendes Tutorial? Viele Grüße onlinekater |
Re: Tutorial für JVInspector gesucht
Schau mal unter
![]() Ist kein Tutorial, kann die aber vielleicht mehr sagen als die samples.... |
Re: Tutorial für JVInspector gesucht
Danke für den Tip.
Aber so richtig hilft mir das leider auch noch nicht weiter. :wall: Ich wäre auch an Codeschnippseln interessiert, die die Handhabung verdeutlichen. Gruß onlinekater :cat: |
Re: Tutorial für JVInspector gesucht
Nun meine Erfahrung mit dem JvInspector ist, dass er ziemlich flexibel ist und man eigentlich alles realisieren kann, was man von einem ObjektInspector erwartet. Das große Problem ist nur, wie du ja selbst feststellst, die Handhabung. Ich habe sogut wie alles nur über probieren und studieren der Quellcodes rausbekommen ...
Was möchtest du denn konkret machen, vielleicht haben wir ja paar Tipps für dich. |
Re: Tutorial für JVInspector gesucht
Hallo Christian!
Ich möchte mehrere miteinander verbundene Datasets zum Editieren darstellen. Vom MainDataset wird nur ein Datensatz dargestelln, von den untergeordneten Datasets sollen dann aber alle Datensätze dargestellt werden. Gibt es da eine Möglichkeit? Das MainSet füge ich über eine Konstruction ala
Delphi-Quellcode:
ein.
TJvInspectorDBData.New(JvInspector1.Root, DataSource1, ['LastName', 'FirstName']);
Für die Detaildatasets habe ich so bisher noch nichts gefunden :? Muß ich da womöglich alle Datensätze per Code zufügen (Schleife o. ä.)? Gruß Thomas :coder: BTW: Ich habe bei der Suche festgestell, daß Du des öfteren auf JVInspector verweist. Nutzt Du den oft? Wärest Du evtl. daran interessiert, an einem entsprechenden Tutorial mitzuwirken, wenn es noch keines gibt? |
Re: Tutorial für JVInspector gesucht
Oi. Da muss ich ja gestehen, dass mein Datenbankwissen in Verbindung sehr sehr löchrig ist ^^. Und dann noch in Verbindung mit dem JvInspector ... da muss ich leider passen.
Den JvInSpector nutze ich eigentlich nur in den Editoren zu meinem Projekt ![]() Um das Problem korrekt zu verstehen: Du möchtest in einem Inspector sowohl den Hauptdatensatz als auch die zugehörigen Untersätze anzeigen? Sollen die Daten auch bearbeitet werden können? Dann wird es, so glaube ich, sehr schwierig. Die Problematik ist, dass diese Datasources Satz-Bezogen sind. Heisst du wirst um eine Schleife nicht drum rumkommen. Kann mir kaum vorstellen, dass der JvInspector in diesem Fall alle Sätze gleichzeitig anzeigen lassen kann (zumindestens mit den vorgefertigten Funktionen). Hab auch leider kein Delphi hier, so dass ich mir garnichts anschauen kann ... vielleicht zur späterer Stunde nochmal ;) Zitat:
P.S: Mist, hab erst hintergesehen, dass du ja "zum Editieren" geschrieben hast ... Das wird glaube schwierig ... |
Re: Tutorial für JVInspector gesucht
*push*
|
Re: Tutorial für JVInspector gesucht
Vielleicht mal als Denkanstoss. Folgendermaßen hab ich es bei mir gelöst:
1. habe ich mir einen Speicherbereich mit
Delphi-Quellcode:
angelegt, in dem die zu bearbeitenden Daten abgelegt werden. Das Problem ist, dass die TJvInspectorVarData nur auf Pointer arbeitet. Man kann zwar auch mit einem entsprechenden Data-Objekt auf ein Feld eines Objektes (published) zugreifen, aber das war für meine Problemstellung nicht möglich.
var
Adress: Integer; MemoryPool: Pointer; MemoryPool:=GetMemory(20000); ZeroMemory(memoryPool,20000); Adress:=Integer(MemoryPool); In diesem MemoryPool werden nun hintereinander die Daten abgelegt und passende Data-Objekte erzeugt.
Delphi-Quellcode:
Am Ende der Bearbeitung musst du natürlich wieder die Werte in die Quelle übertragen. Das sieht dann ähnlich aus:
for Dummy:=0 to fRecord.ValueCount-1 do
begin case fRecord.Values[Dummy].ValueType of ervtCardinal: begin // Data-Objekt erzeugen NewItem := TJvInspectorVarData.New(JvInspector.Root,fRecord.GetValueProperty(Dummy,'Name'),typeInfo(Cardinal),PCardinal(Adress)); // Wert in MemoryPool übertragen PCardinal(Adress)^:=fRecord.Values[Dummy].valueCar; // Zeiger verschieben inc(Adress,sizeOf(Cardinal)); end; ervtInteger: begin NewItem := TJvInspectorVarData.New(JvInspector.Root,fRecord.GetValueProperty(Dummy,'Name'),typeInfo(Integer),PCardinal(Adress)); PCardinal(Adress)^:=fRecord.Values[Dummy].valueInt; inc(Adress,sizeOf(Cardinal)); end; ervtInteger: begin NewItem := TJvInspectorVarData.New(JvInspector.Root,fRecord.GetValueProperty(Dummy,'Name'),typeInfo(String),PString(Adress)); PString(Adress)^:=fRecord.Values[Dummy].valueString; inc(Adress,sizeOf(String)); end; end; end;
Delphi-Quellcode:
Wichtig ist, dass beim übernehmen die gleichen Werte genommen werden, wie beim befüllen des MemoryPools, da es sonst zu ungereimtheiten kommt.
Adress:=Integer(MemoryPool);
for Dummy:=0 to fRecord.ValueCount-1 do begin case fRecord.Values[Dummy].ValueType of ervtCardinal: begin fRecord.SetCardinal(fRecord.Values[Dummy].ValueName,PInteger(Adress)^); inc(Adress,sizeOf(Cardinal)); end; ervtInteger: begin fRecord.SetInteger(fRecord.Values[Dummy].ValueName,PInteger(Adress)^); inc(Adress,sizeOf(Integer)); end; ervtString: begin fRecord.SetString(fRecord.Values[Dummy].ValueName,PString(Adress)^); inc(Adress,sizeOf(String)); end; end; Zugegeben eine ziemliche Frickellösung, aber wie gesagt, funktioniert klaglos. Eventuell kannst du es gebrauchen. Vielleicht gibt es aber für dein Problem eine wesentlich einfachere Lösung. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz