Autor |
Beitrag |
rushifell
      
Beiträge: 306
Erhaltene Danke: 14
|
Verfasst: Sa 25.12.10 10:49
Hallo und schöne Feiertage erstmal an alle!
Ich hoffe, dass ich im richtigen Forum poste und mir vielleicht irgend jemand helfen kann.
Eigentlich geht es nicht direkt um mich. Ich habe vor ein paar Jahren eine Anwendung in Delphi geschrieben, die ich schon lange nicht mehr weiterentwickle. Nun hat mich jemand per E-mail mit folgender Anfrage angeschrieben:
Zitat: | ... Leider werden bei mir in Deinem Programm nicht mehr alle Steuerelemente angezeigt. Über Tastatur lassen sich die unsichtbaren Knöpfe erreichen. Ich benutze Windows XP Home SP3...
|
Ich selbst benutze im Moment Vista und habe das Programm auf diversen Betriebssystemen laufen (auch XP) und hatte nie Probleme. Leider weiss ich nicht, welche Steuerelemente er meint.
Ich habe das Programm mit Delphi 7 PE compiliert und mit UPX gepackt. Könnte es etwas mit UPX oder ActiveX zu tun haben?
Vielleicht hat von Euch jemand eine Idee. Danke schonmal!
Viele Grüße
rushifell
|
|
jaenicke
      
Beiträge: 19313
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 25.12.10 11:21
rushifell hat folgendes geschrieben : | Ich selbst benutze im Moment Vista und habe das Programm auf diversen Betriebssystemen laufen (auch XP) und hatte nie Probleme. Leider weiss ich nicht, welche Steuerelemente er meint. |
Ich nehme an Buttons und CheckBoxen z.B.
rushifell hat folgendes geschrieben : | Ich habe das Programm mit Delphi 7 PE compiliert und mit UPX gepackt. Könnte es etwas mit UPX oder ActiveX zu tun haben? |
UPX ist zwar normalerweise keine gute Idee, sowohl aus programmtechnischer Sicht als auch weil dann das Programm mit sehr viel höherer Wahrscheinlichkeit als Virus erkannt wird, aber solche Probleme wird es kaum verursachen.
Das Problem ist ein Fehler in Delphi. Der tritt AFAIK unter XP und Vista auf. Das Problem ist die WM_UPDATEUISTATE Message. Irgendwo gab es dafür auch einen Fix, sowohl in der QC selbst als auch in der DP. Ich such mal kurz danach...
// EDIT:
Hier gibts entsprechende Infos:
qc.embarcadero.com/wc/qcmain.aspx?d=37403
www.delphipraxis.net...auf-tastendruck.html
|
|
platzwart
      
Beiträge: 1054
Erhaltene Danke: 78
Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
|
Verfasst: Sa 25.12.10 12:47
Ansonsten wäre ein Screenshot ganz nett.
_________________ Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)
|
|
rushifell 
      
Beiträge: 306
Erhaltene Danke: 14
|
Verfasst: Sa 25.12.10 15:50
Danke für Eure Antworten.
Ich habe jetzt ein Screenshot und kann das Problem nun auch besser nachvollziehen.
Es sieht so aus, wie wenn der rechte und untere Rand der Anwendung abgeschnitten wäre. Dadurch sind die Komponenten die Außerhalb dieses Randes liegen natürlich nicht erreichbar. Ich habe jedoch Anchors benutzt.
Kann das auch mit Anchors, Constraints oder wm_GetMinMaxInfo zusammenhängen?
Das blöde ist, dass ich den Fehler auf meinen PC's nicht reproduzieren kann. Dann wäre das ganze wesentlich einfach, weil ich testen könnte.
Gruß
|
|
platzwart
      
Beiträge: 1054
Erhaltene Danke: 78
Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
|
Verfasst: Sa 25.12.10 16:03
Eventuell benutzt derjenige einfach einen zu kleinen Bildschirm (Netbook...)? Kannst du den Screenshot mal zeigen?
_________________ Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)
|
|
rushifell 
      
Beiträge: 306
Erhaltene Danke: 14
|
Verfasst: Sa 25.12.10 16:41
Im Anhang ist das Bild als *.gif gespeichert.
Edit: Hab das Bild wieder gelöscht.
Der rechte und untere Seitenrand der Anwendung war abgeschnitten.
Zuletzt bearbeitet von rushifell am So 02.01.11 10:08, insgesamt 1-mal bearbeitet
|
|
jaenicke
      
Beiträge: 19313
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 25.12.10 16:56
Das ist ein Fehler von Delphi 7. Den kann man leider nur manuell beheben. Es gibt AFAIK keinen automatischen Fix.
Das Problem ist, dass die Randberechnung erst bei Delphi 2006 korrigiert wurde. Vorher wurde der Rand immer mit ich glaube je 2 Pixel Breite angenommen statt die entsprechenden Funktionen zu benutzen. (Die es im Übrigen auch schon bei Win9x gab...)
Schon bei XP gab es da leichte Probleme, aber der eine Pixel oder so ist nicht aufgefallen. Bei Vista mit 8 Pixeln Randbreite merkt man das aber massiv.
Dir bleibt da leider wie gesagt nur ein besserer Oberflächenentwurf (bei meinen GUIs passiert das nicht) oder manuelles Korrigieren.
|
|
Martok
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Sa 25.12.10 17:05
Mag zwar sein, aber das ist hier nicht der Fehler
Das Problem dürfte eher sein, dass Windows es nicht zulässt, Fenster größer als die ClientArea des Desktops zu erstellen. Das führt dazu, dass größere Fenster erst beschnitten werden und danach die Berechnung von Anchors einsetzt. Wenn das also ein Netbook ist, ist da genau dieser Fehler dran.
Kann man nicht fixen, außer zu versuchen das Form kleiner zu gestalten.
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
jaenicke
      
Beiträge: 19313
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 25.12.10 17:20
 Nein, der Fehler ist (nehme ich an, ok), um es genauer zu erklären, dass Delphi 7 die Breite inklusive Rahmen speichert. Wenn man jetzt unter Vista kompiliert, dann mit der Breite von z.B. 200 Pixeln inklusive 16 Pixeln Rand.
Wenn man das dann unter XP ausführt, hat man immer noch 200 Pixel Breite, aber nur 4 Pixel Rand. Das weiß das Programm aber nicht. Dementsprechend werden die Komponenten falsch skaliert. Und das sieht dann haargenau wie im Screenshot aus.
Probiere es einfach aus. Setze Komponenten nahe an den Rand und kompiliere mit Delphi 7 unter Vista/7 und führe es unter XP aus oder umgekehrt. Das führt 100%ig zum Fehler, es sei denn man hat nicht die Standardthemes und andere Randbreiten.
|
|
Martok
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Sa 25.12.10 17:24
Da ich sowohl mein 7 als auch das XP im klassischen Modus betreibe, werde ich das so nicht sehen.
Da kommen aber nun mal bestenfalls 24Pixel zusammen (in deinem Beispiel), das sieht mir auf dem Screenshot nach wesentlich mehr aus 
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
rushifell 
      
Beiträge: 306
Erhaltene Danke: 14
|
Verfasst: Sa 25.12.10 17:55
Ich habe das Programm jetzt unter Vista mit Delphi2005PE (ich hab keinen anderen Compiler) compiliert und demjenigen, der mir den Fehler gemeldet hat, zugeschickt. Wenn das Problem aber erst in Delphi2006 behoben wurde, wird's wohl immer noch nicht funktionieren. Unter XP tritt das Problem bei mir auch nicht auf, weder im klassischen noch im XP-Modus.
Die Listbox und Checkcombobox sind über Anchors mit den Rändern des Formulars verbunden. Ich kann das Formular über ziehen nach rechts und unten vergrößern.
Im OnCreate-Ereignis des Formulars habe ich folgenden Code eingefügt, um die Anwendung zu zentrieren. Dies dürfte jedoch auch keine Probleme machen?
Delphi-Quelltext 1: 2:
| Top:=Round((Screen.Height-Height)/2); Left:=Round((Screen.Width-Width)/2); |
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| Procedure TForm1.wmGetMinMaxInfo(var Msg : TMessage); begin PMinMaxInfo(Msg.lParam)^.ptMaxSize:= Point(920,730); PMinMaxInfo(Msg.lParam)^.ptMaxPosition:= Point(34,5); PMinMaxInfo(Msg.lParam)^.ptMinTrackSize:= Point(590,348); end; |
... dürfte doch auch keine Probleme verursachen.
Ich habe übrigens aus optischen Gründen jeweils ein Panel unter die ListBox und Checkcombobox sowie die nicht sichtbaren Buttons gelegt.
@jaenicke:
Ich kann nicht ganz nachvollziehen, wie Du das meinst, und wie ich den Fehler manuell beheben könnte.
Wenn ihr Euch mein Programm anschauen möchtet, sucht einfach über Google nach dem Namen des Programms (Screenshot). Der zweite Treffer ist meine Homepage. Dort ist auch ein Screenshot des Programms.
|
|
jaenicke
      
Beiträge: 19313
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 25.12.10 20:20
Ok, Entschuldigung Martok, hier hast du Recht. Durch die untergelagerten Panels wird der Fehler umgangen. Ich habe das Programm gerade einmal getestet, das Problem liegt offenbar daran, dass Scaled auf dem Formular auf True ist oder so. Bei einer Umstellung der Schriftgrößen konnte ich das Problem teilweise reproduzieren.
Auch an einer zu geringen Bildschirmauflösung liegt es jedenfalls nicht. Selbst bei 640x480 tritt der Fehler nicht auf, das Formular passt nur nicht komplett auf den Bildschirm.

|
|
D2505
      
Beiträge: 62
Erhaltene Danke: 18
Delphi (7 PE + Lazarus ) ;Java ( Eclipse),
|
Verfasst: Sa 25.12.10 20:41
rushifell hat folgendes geschrieben : |
Ich habe das Programm mit Delphi 7 PE compiliert
rushifell |
darf man das prog. die man mit der pe gemacht hat veröfentlichren bei mir stand im benutzerVertrag das dürfte ich nicht.
|
|
Tankard
      

Beiträge: 217
Erhaltene Danke: 96
|
Verfasst: Sa 25.12.10 20:49
soweit ich weiss, durfte man sie nur nicht verkaufen.
|
|
jaenicke
      
Beiträge: 19313
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 25.12.10 21:13
Nein, gar nicht verbreiten, nur mit Turbo Delphi war die Verbreitung und der Verkauf erlaubt.
Der Grund dafür ist, dass auch die Werbung usw., die man mit einer Freeware für sich macht, als kommerzielle Nutzung angesehen wird. Dazu gibt es irgendwo auch ein entsprechendes Interview. Müsste ich mal schauen wo. Für welche PEs das gilt, weiß ich nicht genau.
|
|
elundril
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: Sa 25.12.10 21:59
Kommerziell werbung macht? Für meine anderen gratisprodukte oder wie? 
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
|
|
jaenicke
      
Beiträge: 19313
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 25.12.10 22:03
Es geht dabei einerseits z.B. um Werbeeinnahmen auf der eigenen Homepage für das Produkt. Das wäre dann aber ja ohnehin schon eindeutig eine kommerzielle Nutzung.
Andererseits geht es um Werbung für die eigenen Person, z.B. im Hinblick auf die Suche nach einem Arbeitsplatz.
Ich habe gerade noch einmal geschaut. Wenn ich das richtig sehe, gilt dies für Delphi 6 PE und Delphi 7 PE. Die Lizenzen von Delphi 2005 PE und Turbo Delphi erlauben hingegen die kommerzielle Nutzung (als Privatperson) und damit natürlich auch die Verteilung als Freeware.
|
|
elundril
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: Sa 25.12.10 22:41
Bin ich froh das ich damals beides gratis bekommen hab.
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
|
|
D2505
      
Beiträge: 62
Erhaltene Danke: 18
Delphi (7 PE + Lazarus ) ;Java ( Eclipse),
|
Verfasst: Mo 27.12.10 18:08
jaenicke hat folgendes geschrieben : | Es geht dabei einerseits z.B. um Werbeeinnahmen auf der eigenen Homepage für das Produkt. Das wäre dann aber ja ohnehin schon eindeutig eine kommerzielle Nutzung.
Andererseits geht es um Werbung für die eigenen Person, z.B. im Hinblick auf die Suche nach einem Arbeitsplatz.
Ich habe gerade noch einmal geschaut. Wenn ich das richtig sehe, gilt dies für Delphi 6 PE und Delphi 7 PE. Die Lizenzen von Delphi 2005 PE und Turbo Delphi erlauben hingegen die kommerzielle Nutzung (als Privatperson) und damit natürlich auch die Verteilung als Freeware. |
toll ich hab die 7PE
|
|
glotzer
      
Beiträge: 393
Erhaltene Danke: 49
Win 7
Lazarus
|
Verfasst: Mo 27.12.10 19:05
recompiling mit lazarus un alles is kein problem
Für diesen Beitrag haben gedankt: D2505
|
|