Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   DFMEdit (https://www.delphipraxis.net/70017-dfmedit.html)

uligerhardt 20. Sep 2006 09:33

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:
unit MyVTReg;

interface

implementation

uses
  Classes,
  VirtualTrees;
 
initialization
  RegisterClasses([TVirtualStringTree, TVirtualDrawTree]);
finalization
  UnRegisterClasses([TVirtualStringTree, TVirtualDrawTree]);
end.
und MyVTRegP.dpk:
Delphi-Quellcode:
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.
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.

DevilsCamp 20. Sep 2006 09:36

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]

_frank_ 20. Sep 2006 19:06

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

DevilsCamp 20. Sep 2006 19:47

Re: DFMEdit
 
Da ich Turbo Delphi nutze
Zitat:

Zitat von _frank_
um welche komponente handelt es sich denn? hast du den quellcode?

Es ist eine selbstgeschriebene. Ja, Quellcode habe ich

Zitat:

hast du ein eigenes Package für die kompo gemacht?
Da ich Turbo Delphi nutze, habe ich sie in die dclusr eingebaut.

Zitat:

funktioniert das bei delphi?
Und das funktioniert.



Ich glaube inzwischen auch nicht daran, dass es an dem Package liegt. Andere Komponenten aus der dclusr100.bpl werden ohne Probleme angezeigt.

_frank_ 20. Sep 2006 19:52

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:
  if assigned(cl) then
  begin
    if cl.InheritsFrom(TControl) then
      sl.AddStrings(ctlprop);
  end;
//edit: ich hab jetzt die löschregeln mit in den Optionen-Dialog integriert...
aktuelle version 0.2.0.6b

Frank

_frank_ 24. Sep 2006 18:54

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)
http://www.delphipraxis.net/internal...ct.php?t=52550 hat mir da weitergeholfen (auch wenn man dazu unit CommCtrl einbinden muss, wo ich ne ganze weile dran gerätselt habe)
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

_frank_ 29. Sep 2006 20:16

Re: DFMEdit
 
hab mal noch vorhandene Memory-Leaks gefixt ;) *push*

Gruß Frank

_frank_ 8. Okt 2006 21:26

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

_frank_ 19. Okt 2006 13:58

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

_frank_ 17. Jan 2007 16:12

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

_frank_ 25. Jan 2007 23:38

Re: DFMEdit
 
habe eine neue Stable hochgeladen, für interessierte

Gruß Frank

_frank_ 31. Mai 2007 23:21

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

_frank_ 19. Jun 2007 03:41

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

CCRDude 19. Jun 2007 07:58

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:

Fehler beim Lesen von lvProperties.Columns: Fehler beim Lesen von TListColumn.Width: Ungültiger Wert der Eigenschaft (EReadError)

Möchten Sie diesen Fehler melden?
[Yes] [No]
Laut Baumansicht haben alle Spalten in genanntem TListView (lvProperties) die Breite 200, scheint mir doch relativ gültig zu sein ;-)

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 :)

_frank_ 19. Jun 2007 14:03

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:
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;
ich schau mal, ob ich wegen den Dialogen etwas machen kann...

//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

_frank_ 24. Jun 2007 14:12

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

_frank_ 30. Jul 2007 15:36

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

Shaman 10. Aug 2007 14:14

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.

_frank_ 10. Aug 2007 14:29

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

Shaman 10. Aug 2007 16:24

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 11:13 Uhr.
Seite 3 von 3     123   

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