![]() |
Re: DFMEdit
Als Beispiel mal, wie ich DFMEdit den VirtualTreeView bekannt gemacht habe. Die Originalquellen hab ich gar nicht angefasst, stattdessen ein neues "Wrapper-Package" gebaut:
MyVTReg.pas:
Delphi-Quellcode:
und MyVTRegP.dpk:
unit MyVTReg;
interface implementation uses Classes, VirtualTrees; initialization RegisterClasses([TVirtualStringTree, TVirtualDrawTree]); finalization UnRegisterClasses([TVirtualStringTree, TVirtualDrawTree]); end.
Delphi-Quellcode:
Allerdings war der VT danach immer noch nicht vollständig integriert, da fehlen wohl noch diverse Einträge in den *.obj's. Das auszuprobieren hatte ich dann allerdings keine Lust mehr.
package MyVTRegP;
{$R *.res} {$ALIGN 8} {$ASSERTIONS ON} {$BOOLEVAL OFF} {$DEBUGINFO ON} {$EXTENDEDSYNTAX ON} {$IMPORTEDDATA ON} {$IOCHECKS ON} {$LOCALSYMBOLS ON} {$LONGSTRINGS ON} {$OPENSTRINGS ON} {$OPTIMIZATION ON} {$OVERFLOWCHECKS OFF} {$RANGECHECKS OFF} {$REFERENCEINFO OFF} {$SAFEDIVIDE OFF} {$STACKFRAMES OFF} {$TYPEDADDRESS OFF} {$VARSTRINGCHECKS ON} {$WRITEABLECONST ON} {$MINENUMSIZE 1} {$IMAGEBASE $400000} {$IMPLICITBUILD ON} requires vcl, VirtualTreesD10; contains MyVTReg; end. |
Re: DFMEdit
Ich verzweifle grad.
Ich habe alles so gemacht wie bisher besprochen, doch wenn ich die Komponente nun im DFMEdit einsetze und auf "Vorschau" klicke, dann bekomme ich folgende Fehlermeldung:
Code:
---------------------------
Fehler --------------------------- Zugriffsverletzung bei Adresse 5100B847 in Modul 'dclusr100.bpl'. Lesen von Adresse 00000068 (EAccessViolation) --------------------------- OK --------------------------- [edit] Komischerweise ist es nur EINE der Komponenten, die diese Meldung erzeugt. Blöderweise ist es aber die für mich am wichtigste :( [/edit] |
Re: DFMEdit
also zugriffsverletzung klingt nicht nach einem Packet-Fehler...ich würde eher denken, dass die komponente selber buggy ist...
um welche komponente handelt es sich denn? hast du den quellcode? hast du ein eigenes Package für die kompo gemacht? funktioniert das bei delphi? Packages lassen sich halt bescheiden debuggen. evtl mal die kompo hardcoded in die classes_u mit einbinden (registerclasses nicht vergessen) und erneut probieren. HTH Frank |
Re: DFMEdit
Da ich Turbo Delphi nutze
Zitat:
Zitat:
Zitat:
Ich glaube inzwischen auch nicht daran, dass es an dem Package liegt. Andere Komponenten aus der dclusr100.bpl werden ohne Probleme angezeigt. |
Re: DFMEdit
um den Fehler zu lokalisieren würde ich die komponente mal statisch einbinden (uses in classes_u.pas, registerclasses) und breakpoints innerhalb der klasse machen (constructor, onpaint, etc)...dann müsstest du sehen, wo die AV herkommt ;)
schonmal die neuen Funktionen getested/neuer Name dieser eingefallen? //edit: hab mir jetzt mal Turbo-delphi installiert...musste erstmal sämtliche TSpinedits/TSpinbuttons in TUpDown ändern (weil es die Komponenten nicht mehr gibt bzw. sich das Zusatzpacket nicht installieren lässt), jetzt läuft es erstmal ich musste nur feststellen, dass die popups in der toolbar nicht funktionieren. Auch das setzen der EnableDropdown-Eigenschaft half nicht (da wird button ausgegraut)...was ist da falsch? im Anhang mal das geänderte Main-und Options-Form die functions_u.pas enthält den folgenden bugfix sowie eine Möglichkeit in der config anzugeben, dass es sich bei einer unbekannten Komponente um ein Control handelt (wenn kein rtti möglich ist). //edit bugfix: Zugriffsverletzung beim Erstellen von unbekannten Komponenten functions_u.pas:804:
Delphi-Quellcode:
//edit: ich hab jetzt die löschregeln mit in den Optionen-Dialog integriert...
if assigned(cl) then
begin if cl.InheritsFrom(TControl) then sl.AddStrings(ctlprop); end; aktuelle version 0.2.0.6b Frank |
Re: DFMEdit
Moin,
ich hab dfmedit mal in Zusammenhang mit Turbo-Delphi probiert und musste feststellen, das dort die Dropdownmenüs in der Toolbar nicht angezeigt wurden (vermutlich auch in weiteren delphi-Versionen). Es hat sich herausgestellt, dass es am "falschen" PopupComponent lag (TToolbar statt TToolbutton) ![]() die geänderte Version hab ich auf die beta-seite hochgeladen. (weitere Kompilierinfos in Readme.txt). Ich hab eauch herausgefunden, warum sich dfmedit bei Formularen aus Binärdateien manchmal aufhängt. Nach meinen bisherigen Recherchen liegt es an Fließkomma-eigenschaften, die scheinbar die Grenzen von 32-Bit-Integern überschreiten. leider ist mir außer dem Neukompilieren mit einer neueren Delphi-Version kein workaround bekannt. Es würde mich freuen, wenn sich noch Beta-Tester finden würden. Gruß Frank |
Re: DFMEdit
hab mal noch vorhandene Memory-Leaks gefixt ;) *push*
Gruß Frank |
Re: DFMEdit
ich hab mal unter Versionsnummer 0.2.0.9 die RC1 für die 0.3 hochgeladen.
Es wird vor der 0.3 nur noch bugfixes geben ( also testen testen testen ;) ) . Neu sind u.a. eine automatische positionsanpassung beim einfügen in der Vorschau (wenn durch einfügen die Komponente im neuen Parent nicht mehr sichtbar ist), eine Klassenersetzung (z.B. TNT-Controls im Preview durch die Standard-Komponenten darzustellen), eine löschliste für eigenschaften die mit der Ersetzung nicht mehr kompatibel sind, ein Bug beim bringtofront/sendtoback im Preview. Hoffe, es finden sich noch Tester... Gruß Frank |
Re: DFMEdit
hab mal einiges umgebaut (u.a. gibt es jetzt die Möglichkeit Pas-Dateien nach dem Erstellen/Ändern gleich zu öffnen).
RC2 = 0.2.0.10b Schon jemand Bugs (in der RC1) gefunden? Gruß Frank |
Re: DFMEdit
ich wollte mal nachfragen, ob schon bugs in der rc2 (0.2.0.10b) gefunden wurden, da ich diese jetzt als Stable hochladen will...
Gruß Frank |
Re: DFMEdit
habe eine neue Stable hochgeladen, für interessierte
Gruß Frank |
Re: DFMEdit
hab nach langer Wartezeit mal eine neue Beta (0.3.0.3b)...
wesentliche Neuerung ist die Komponenten-Palette für den Design-Modus. Würde mich sehr über Beta-Tester freuen... die Einträge können auch mit images hinterlegt werden (hab noch keine Antwort von Borland bezüglich der Delphi-Toolbar-Icons, somit sind diese nicht mit drin). Es exisitert aber eine images_.bmp, welche (wenn der unterstrich entfernt wird) von DFM-Edit verwendet wird. Wenn soweit keine Probleme weiter aufkommen, werde ich noch den Menü-Editor versuchen einzubauen... Frank |
Re: DFMEdit
Moin,
ich schmeiß mal eine neue Beta (0.3.0.4b) in die Runde ;) ich hab die Komponenten-Palette etwas verbessert (Toolbar-Images, SubControl-Check). der Objektinspektor hat jetzt einen (eigentlich 3) Inplace-Editor (wird noch erweitert) und es existiert ein einfacher Menü-Editor (Zugriff über Kontextmenü von Treenode eines TPopupMenu/TMainMenu). weiterhin gibt es eine 3. Projektdatei (dfmedit_nopackage.dpr) um eine binary zu erstellen, welche keine packages benötigt/unterstützt. würde mich sehr über Feedback freuen...natürlich auch Bug-Reports (bitte bugs.txt beachten). Gruß Frank |
Re: DFMEdit
Datei-Öffnen-Dialoge, die man nicht in der Größe verändern kann, sind vielleicht noch aktuell in der Delphi-IDE (z.B. TImageList-Hinzufügen-Dialog), aber von normaler Software erwarte ich eigentlich modernes ;) (meine Projektordner sind nicht gerade klein, und in so einem Winzigfenster zu suchen macht einfach keinen Spaß).
Beim generieren einer Vorschau bekomme ich übrigens: Zitat:
An sich finde ich die Idee aber sehr gut, die Original-IDE benutze ich eh immer weniger, so könnte ich auch ab und an mal Formulare bearbeiten :) |
Re: DFMEdit
Danke CCRDude,
hab das Problem gefunden...hat mit dem bugfix zu tun (1 bug weg ein neuer drin ;) ). bei der Ausgabe wird die eigenschaft in der TCollection als String behandelt und ' an die Eigenschaft angehängt geänderte EncodeSpecialChars-Funktion (dfmparse_u.pas:306)
Delphi-Quellcode:
ich schau mal, ob ich wegen den Dialogen etwas machen kann...
function EncodeSpecialChars(ins:string):string;
var s,value:string; i,c,lc:integer; begin lc:=0; value:=ins; if isLastChar(PChar(value),'''') then begin for i:=2 to length(value)-1 do begin c:=ord(value[i]); if not ((c<32) or (c>126) or (c=39)) then c:=-1; if (c>-1) {and (i>p) }and (i<length(value)) then begin //sonderzeichen zwischen den Stringbegrenzern s:=s+'''#'+IntToStr(c)+''''; end else s:=s+value[i]; if ((length(s)-lc)>64) and (i<length(value)-1) then begin s:=s+''' +'+#13#10; lc:=length(s); s:=s+{StringOfChar(' ',indent*2+2)+}''''; end; end; {if length(s)>2 then while pos('''''',s)>0 do delete(s,pos('''''',s),2); } result:=''''+s+''''; end else result:=ins; end; //Edit für diejenigen, die ein Hauptmenü einer Toolbar vorziehen (oder auch beides haben wollen), hab ich jetzt ein solches TMainMenu eingebaut ;) //nochmal edit: hab jetzt tab und shift+Tab im OI eingebaut, den Menü-Editor um die defualt-eigenschaft ergänzt und die Hilfe bisschen aktualisiert ich hoffe, es finden sich noch paar tester... Gruß Frank |
Re: DFMEdit
hat denn schon jemand Bugs gefunden? *push*
den bug beim speichern hab ich schon gefixt (denke ich). weiterhin hab ich noch eine Datei-History und eine Möglichkeit geschafen, Eigenschaftsnamen zu ändern (sinnvoll in Verbindung mit <replace>, z.b. hat TTntCombobox eine eigenschaft Items.Widestrings, dese kann man durch Items.Strings ersetzen, wenn man dieses Control als TCombobox darstellt). Gruß Frank |
Re: DFMEdit
Aufgrund der Tatsache, dass ich die aktuelle beta soweit als Stable betrachte, bitte ich nochmals um einige Beta-Tester. *push*
sollten sich binnen der nächsten 2 Wochen keine Bugs mehr finden und ich die französische Übersetzung zeitnah bekommen steht dem release eigentlich nichts mehr im Wege. dann kann ich mich voll und ganz auf die Entwicklung/Einbindung der Background-Klasse konzentrieren :) Gruß Frank |
Re: DFMEdit
hey there
Bei mir kam eine AV, als ich im "Eigenschaften bearbeiten"-Fenster eine Bitmap austauschen wollte (Bei Klick auf OK). Auch als ich das bisherige Bitmap exportiert und wieder importiert habe, trat der Fehler auf. |
Re: DFMEdit
danke, ich schau mir das mal an...
//edit fehler in aktueller beta jetzt behoben //nochmal edit hatte vergessen die non-package-binary zu kompilieren :) Gruß Frank |
Re: DFMEdit
Also bei mir gibts den Fehler immer noch :(
dfmedit_0.3.0.4b_nopackage.zip Zugriffsverletzung bei Adresse 0049320A in Modul 'dfmedit.exe' Schreiben von Adresse 00000004 (EAccessViolation) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:55 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-2025 by Thomas Breitkreuz