![]() |
Vollautomatische Spaltenbreitenanpassung in Fenstern
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo Delphifreunde!
Nachdem ich mein Programm bereits dem Delphi-forum.de-Forum (mit bisher sehr bescheiden zu nennender Resonanz) vorstellte, soll auch dieses Forum das Ergebnis meines Fleißes der letzten Wochen, fast schon Monate kennenlernen. Wen sowohl die in ihrer Breite nie stimmenden Spalten in den Dateianzeigelisten (Detailansicht) als auch die halbherzigen, halbautomatischen Lösungen, diese Breiten zu korrigieren (am besten in Echtzeit jedem Bedarf anzupassen), schon immer so gestört haben wie mich, der möge in meinem kleinen Programm den weltweit anscheinend allerersten Versuch kennenlernen, zur Lösung dieser Problematik eine vollautomatische Lösung zu schaffen. Sämtliche Details zu meinem - sehr wahrscheinlich immer noch nicht ganz ausgereiften - Programm stehen in den Informationen dazu - aufrufbar nach dem Programmstart. Für Anregungen, Hinweise, Kritiken, Verbesserungsvorschläge usw. usf. jeglicher Art bin ich offen und dankbar. Viele Grüße Delphi-Laie Edit: Ein subtiler Fehler (der aus unterschiedlichem Verhalten einer API-Funktion in verschiedenen Windows herrührt) ließ das Programm unter ME (generell 9.x?) nicht mehr lauffähig sein. Korrigiert, deshalb jetzt Beta 4 Edit: Inzwischen Beta 7. Letzte Korrekturen: - Beep bei Enter-Tastendruck (TEdit) abgeschaltet - Bezeichnung des Registryeintrages verbessert (jetzt vollständiger Name des Programmes anstatt 4 Buchstaben) - die anscheinend nicht nötige Rekursion bei EnumChildWindows, um skalierbare Fensterelemente gezielt zu suchen, entfernt. Funktioniert trotzdem. SysListView32 und TListView sind anscheinend direkt in die Hauptfenster eingebettet, sodaß die Rekursion überflüssig ist. Für weitergehende Interessen steht mein Quelltext in der Rubrik "Open Source" zur Verfügung. Edit: Wiederum böse Fehler im Exe- und im DLL-Projekt gefunden (der eine existierte vorab nicht, keine Ahnung, wie der sich plötzlich einschlich), außerdem die Fensterstatusumschaltung und den Registryzugriff verbessert. Damit jetzt Beta 11. Edit 2: Inzwischen bis zur Beta 13 vorgedrungen. In der Beta 12 u.a. einen kleinen Fehler beim schreibenden Registryzugriff (.free vergessen) behoben, in der Beta 13 etliche kleine Detailverbesserungen vorgenommen. Edit 3: Wieder erhebliche Veränderungen, deshalb inzwischen die (Beta-)Versionsnummer um 2 erhöht. Die beiden wichtigsten, auch optisch markantesten Veränderungen (neben vielen weiteren): - Ermittlung der hinter den Fenstern stehenden Dateinamen nicht nur über Prozeßschnappschup (Routine geht auf Luckies WinInfo zurück), sondern alternativ auch über einen Modulschnappschuß möglich. - Neben der Inklusiv- kann alternativ auch eine Exklusiv-Dateiliste erstellt und benutzt werden, die aber nicht so zuverlässig wie ersteres arbeitet und deshalb mehr Experimentalcharakter trägt. Edit4: Nochmals zwei Versionsnummern höher, nunmehr kann als vierte Auslösemethode auch ein Tastendruck (eine der F-Tasten) den Hotkey und damit die Skalierung auslösen, was jedoch nur halbautomatisch ist (ähnlich AutoHotKey), und die Dateilistentypen können separat zu-/abgeschaltet werden. Zudem habe ich noch tüchtig am Code gefeilt und dabei eine ganze Reihe Fehler ausgemerzt. Edit5: Beta 18 zusätzlich mit optionalem Löschschutz für die Konfigurationsdateien, indem diese offengehalten werden, weil manche Systemreinigungsprogramme auch das Temp-Verzeichnis leeren, kleinen Fehlerkorrekturen und aufgeräumterem Quelltext. Edit6: Dateinamenseingabeprozeduren verbessert. Edit 7: Unterschiedliche Schriftgröße(n) der (beiden) Editfelder vereinheitlicht. Edit 8: Fehler in der Timerprozedur entfernt. Edit 9: Funktionen zur Ermittlung des Exe-Dateinamens etwas vereinfacht. |
Re: Vollautomatische Spaltenbreitenanpassung in Fenstern
Also wenn ich dein Programm als TrayIcon weglege und es mir wieder ansehen möchte ist dies leider nicht möglich. Es erscheint einfach nichts mehr. schade.
XP, SP2. Edit: ok scheint nur beim ersten Start zu sein. Bei einem erneuten Start geht es. Gruss Thorsten |
Re: Vollautomatische Spaltenbreitenanpassung in Fenstern
Zitat:
Meinst Du, daß die Programmoberfläche nicht wieder erscheint? Das habe ich in seltenen Fällen auch schon beobachtet - Ursache natürlich unbekannt. Dieses Erscheinen und Verschwinden habe ich voll in die Hände bzw. Funktionalität des dänischen Programmierers Troels Jakobsen der - hervorragenden, meine ich - Komponente "CoolTrayIcon" gelegt, die ich dafür verwendet habe. Damit will ich die Verantwortung oder Schuld nicht abwälzen, sondern einfach nur erklären, daß ich an solchen Subtilitäten (zumindest derzeit) nichts herumprogrammieren werde, weil ich es einfach nicht kann (ich bin gerade heute erst an seinem "Simple Timer" gescheitert, und der ist vergleichsweise wirklich noch simpel, trivial). Das übersteigt einfach meine Delphikenntnisse (mein Pseudonym ist wohl leider noch eine ganze Weile mein Motto, leider). |
Re: Vollautomatische Spaltenbreitenanpassung in Fenstern
Hallo,
ich hätte die Infos zum Programm bitte aber vor der Installation, hooks.dll werde ich nicht starten lassen, ohne zu wissen, was das Programm tut. Heiko |
Re: Vollautomatische Spaltenbreitenanpassung in Fenstern
Hallo
Ich konnte die Funktionalität des Programms leider noch nicht testen, denn ich bin mit der Bedienung der GUI etwas überfordert. Gibt's irgendwo eine Hilfe Datei? Die Controls sind etwas etwas unübersichtlich angeordnet. |
Re: Vollautomatische Spaltenbreitenanpassung in Fenstern
Zitat:
Controls zu unübersichtlich? Das sehe ich auch so, ich habe sie "halbwegs so hingebebberlt", damit eine gewisse Anordnungssystematik vorhanden ist, gleichzeitig aber das Formular nicht zu groß wird. Wenn man sich entschließt, das Programm automatisch starten zu lassen, dann läuft es im Hintergrund, und dann wird einem auch die Oberfläche nicht mehr zu Gesicht kommen. |
Re: Vollautomatische Spaltenbreitenanpassung in Fenstern
Zitat:
Neben diesem habe ich auch ein paar weitere kleine Fehler gefunden. diese korrigiert und das ganze als nunmehr Beta 5 hochgeladen. Gruß Delphi-Laie |
Re: Vollautomatische Spaltenbreitenanpassung in Fenstern
Klingt ja alles irgendwie wirr.
Ich werde mir hier kein Programm runtersaugen (und schon garnicht installieren und starten), von dem ich nicht mindestens eine Beschreibung und einen Screenshot hier gefunden habe. |
Re: Vollautomatische Spaltenbreitenanpassung in Fenstern
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Beschreibung und Screenshot? Wenn es weiter nichts ist..... Nun, eine m.E. recht ausführliche Beschreibung ist im Archiv enthalten, und der Screenshot ist hier angefügt. Halte ich allerdings nicht für sonderlich aussagekräftig: Das ist kein Programm, das wirklich bedient wird, sondern eigentlich (nur) im Hintergrund agiert (deshalb Trayicon). Das Formular dient "nur" der Konfiguration, dem Einstellen der Funktion(en) bzw. Funktionalität(en). Im übrigen bin ich nicht ganz so ängstlich, was das Ausprobieren der Programme anderer anbetrifft. Ich gehe vom guten Willen der hier Teilnehmenden aus (auch ich habe mein Programm nach bestem Wissen und Gewissen erstellt) und halte es deshalb für recht unwahrscheinlich, sich hier Malware einzufangen (ist auf diesem Wege bei mir auch noch nie passiert). Vielleicht werden die Attachments sogar von der Websoftware geprüft?! Wenn man diesbezüglich ängstlich ist, dann muß man auf solche Test eben verzichten. Ob hier jemand Bösartigkeiten auf diesem Wege zu verbreiten versucht (oder nicht), wird man auch zuallerletzt am Sreenshot und an den Beschreibungen erkennen! Viele Grüße Delphi-Laie Postscriptum: Das Bemerken der Fehler im eigenen Programm nimmt natürlich kein Ende, aber sie werden zum Glück immer kleiner. Eigentlich wäre schon wieder eine neue Beta (also Nr. 6) möglich. |
Re: Vollautomatische Spaltenbreitenanpassung in Fenstern
Zitat:
Es geht mir einfach darum, dass hier viele Programmier-Anfänger ihre Programme vorstellen. Bei Anfängern kann es schon mal vorkommen, dass aus irgendeinem Grund ein falscher Ordner gelöscht wird. Das hatte ich alles schon mal. Das Programm wollte eigentlich in %USER% etwas löschen, es wurde aber wegen einem Programmierfehler in %ALL USERS% gelöscht (oder so). Und warum hast Du den Screenshot als Bitmap in einem rar-Archiv angehängt? Hast Du kein Programm, um das bmp in jpg umzuwandeln? |
Re: Vollautomatische Spaltenbreitenanpassung in Fenstern
Zitat:
2. Natürlich hätte ich umwandeln können, aber ist das nun auch noch ein Problem? |
Re: Vollautomatische Spaltenbreitenanpassung in Fenstern
Wie wäre es, das Programm Open-Source zu machen?
|
Re: Vollautomatische Spaltenbreitenanpassung in Fenstern
Zitat:
Allerdings werden die grundsätzlichen Probleme vielleicht doch nicht (ganz?) aus der Welt zu schaffen sein, damit meine ich vor allem: 1. Die Steuerung der Hook-Prozeduren über Dateien (in DLLs gibt es keine globalen Variablen, vor allem oder zumindest ausgerechnet in solchen, in denen Hook-Prozeduren aufgerufen werden, das erfuhr ich im Delphi.de-Forum: ![]() 2. Die fehlende Langzeitstabilität des Explorers gegenüber diesen Hooks und die manchmal doch recht merkwürdigen Effekte (Probleme!), die das Aktivieren der Hooks mit sich bringt. Ich habe es sogar schon erlebt, daß ein Hook, obwohl ich ihn gar nicht ausgeschaltet ("entladen") hatte, plötzlich "weg" war, zumindest zeigte mein Programm keine Reaktion mehr. Ein reines Timergesteuertes Programm ist jedoch viel zu pille-palle, als daß es wert wäre, sich damit weiter zu beschäftigen. Ich denke, eine weltweit akzeptable vollautomatische Lösung dieser Windows-Lästigkeit, von der auch ich partizipieren könnte, steht über der eitlen Kleinheit, den Quelltext, der ziemlich wenig eigenes echtes "Know how" beinhaltet, eines Programmes, das ohnehin nicht verkaufbar ist, zurückzuhalten. Immerhin bin ich auf einen weiteren Windows-Fehler (Vertauschung bei Ereignisbezeichnungen im CBT-Hook) gestoßen, den ich eigentlich einmal Mikroweich mitteilen sollte, allerdings weiß ich nicht, über welchen Datenkanal (piracy@microsoft.com?!), und ob man dort für solche Kinkerlitzchen offen ist, halte ich für fraglich, zumal viel gravierendere Windows-Probleme seit einigen Versionen dort mit sich herumgeschleppt werden, ohne korrigiert zu werden. So, erst mal wieder genug getextet.... |
Re: Vollautomatische Spaltenbreitenanpassung in Fenstern
Hallo,
< 2. Die fehlende Langzeitstabilität des Explorer > < Immerhin bin ich auf einen weiteren Windows-Fehler (Vertauschung bei Ereignisbezeichnungen im CBT-Hook) > Also, jetzt muss ich mal wieder meinen Senf zugeben. Du bezeichnest dich als Delphi-Laien, kopierst Sachen zusammen, ohne (geraten) richtig Ahnung von der Sache zu haben. Hook-Programmierung ist eine komplizierte Sache. Mache das Programm Opensource und lass uns mal deine eigenen Fehler suchen, bevor du den Fehler bei Windows suchst (OK, auch dort gibt es Fehler). Heiko |
Re: Vollautomatische Spaltenbreitenanpassung in Fenstern
Was soll das Programm tun? Meine detailierten Listenansichten im z.B. Explorer automatisch anpassen?
Was muß ich dazu einstellen? Bei mir passiert nämlich gar nix, obwohl ich hier schon ne halbe Stunde am rumprobieren bin, denn die Idee finde ich eigentlich nicht schlecht. Woran erkenne ich, dass das Programm arbeitet? Einen kleinen Bug in der Beta 5 hab ich beim verzweifelten Ausprobieren auch noch gefunden. Der Öffnen-Dialog hinter dem Button 'Hinzufügen' reagiert falsch. 1. Lassen sich auch z.B. RFT und andere Nicht-EXE-Dateien in die Liste mit aufnehmen und 2. Bekomme ich ne Meldung 'Datei hier schon registriert' beim klicken auf 'Abbrechen'. :hi: Edit: Ach ja. WinXp Sp2 |
Re: Vollautomatische Spaltenbreitenanpassung in Fenstern
Zitat:
Mein Programm ist nunmehr Open Source: ![]() Wer immer sich damit beschäftigen möchte, sei herzlich eingeladen. Für das Bemühen danke ich schon mal im voraus! Nein, natürlich habe ich "nicht richtig Ahnung". Das ist bei diesen modernen, hochkomplexen Programmierwerkzeugen auch nur noch schwerlich möglich. Ich vermute, daß solche Leute wie Assarbad, Koshigaya, Luckie, Mathias Simmack u.ä. sich entweder beruflich damit beschäftigen und/oder mit Turbo-Pascal, spätestens mit den ersten Delphi-Versionen damit praktisch über Jahrzehnte hineingewachsen sind. Die allermeisten sind spätere Einsteiger oder programmieren nur sporadisch (oder erstmalig). Das kann man doch niemandem übelnehmen (tut vermutlich auch niemand). Außerdem muß man sich doch auch auf unbekanntes Terrain wagen, sonst lernt man es doch nicht kennen und mithin nichts dazu. Viele Grüße Delphi-Laie Postscriptum: Beim monierten Windowsfehler bin ich mir sicher: Ich kann doch noch MoveSize und MinMax übersetzen. Auch die Zuordnung meiner Freischaltoptionen für diese Ereignisse hatte ich wiederholt kontrolliert. Falls ich recht behalte, dann wäre es ja "nur" ein Fehler vertauschter Bezeichnungen. |
Re: Vollautomatische Spaltenbreitenanpassung in Fenstern
Zitat:
Richtig, die Spaltenbreiten in den Detailansichten immer vollautomatisch richtig anpassen (was bis heute kein Windows beherrscht), so daß nichts abgeschnitten und nichts verschenkt wird. Einstellen? Die Auslösemethoden und die betreffenden Programme, in deren Fenstern das geschehen soll (weil manche Programme das verwendete Hotkey nicht vertragen). Das Programm ist aktiv, wenn das TrayIcon animiert ist. Es kann aber nur dann wirklich agieren, wenn eine Auslösemethode (1-CBT-Hook, 2-Shellhook, 3-Timer) aktiviert wurde, und das auch nur bei den Programmen, die eingetragen ("registriert") wurden. Zu den Fehlern: Zu 1. Das wundert mich. Ich habe das Einladen von Nicht-Exe-Dateien definitiv abgeblockt, und bei mir kommt beim Versuch dessen statt des Einlesens das Meldungfenster ("Keine .exe-Datei"). Also, leider nicht nachvollziehbar. zu 2. Beim Klick auf Abbrechen im Datei-Öffnen-Dialog? Passiert bei mir auch nicht. "Datei hier schon registriert" habe ich für den Versuch programmiert, eine Programmdatei wiederholt für die Einschlußliste einzulesen (was im Hinblick auf die Programmfunktionalität zwar grundsätzlich möglich, aber völlig überflüssig wäre). Kann eigentlich erst reagieren bzw. erscheinen, wenn überhaupt eine Datei von dieser Routine zurückgeliefert wurde. Einen Fehler ganz anderer Art habe ich jedoch gefunden, und zwar, wenn man das Einlesen der Datei vom Edit-Feld aus mit der Enter-Taste bewirkt (das wollte ich optional auch anbieten): Dann "beept" es immer. Ich habe bisher nur herausgefunden, daß es beim Aufruf der CoolTrayIcon-Unit nach Beendigung der Routine, die den Druck auf die Enter-Taste feststellt, passiert. Ich werde gleich mal versuchen, den Tastaturpuffer zu leeren. Am besten beantworten sich diese Fragen aber dadurch, daß ich mein Projekt nunmehr quellcodegeöffnet habe (in der Rubrik "Open Source"). Viele nette Grüße Delphi-Laie |
Re: Vollautomatische Spaltenbreitenanpassung in Fenstern
Hallo
> Einen Fehler ganz anderer Art habe ich jedoch gefunden, und zwar, wenn man das Einlesen der Datei vom > Edit-Feld aus mit der Enter-Taste bewirkt (das wollte ich optional auch anbieten): Dann beept es > immer. Das ist immer so. Abhilfe.
Delphi-Quellcode:
procedure EditOnKeyPress ...
begin if Key=#13 then Key:= #0; end; Heiko |
Re: Vollautomatische Spaltenbreitenanpassung in Fenstern
Danke, Heiko! Das funktioniert auch bei mir wunderbar...
|
AW: Vollautomatische Spaltenbreitenanpassung in Fenstern
Hallo! Nach so vielen Jahren ist das Problem scheinbar noch immer vorhanden und ich habe ihr kleines Tool unter Windows 10 erfolgreich getestet. Da ich gerade mal einen PC anschalten kann ohne mir dabei einen Finger zu brechen wollte ich fragen ob es sin macht ihr Tool automatisch mit Windows zu starten und ob mir da jemand helfen kann?
Vielen Danke für das kleine, nützliche Programm! VG Ralf Müller |
AW: Vollautomatische Spaltenbreitenanpassung in Fenstern
Zufällig sehe ich, daß hier mal jemand etwas schreibt, denn per e-Mail wurde ich nicht benachrichtigt.
Das Problem scheint Windows immer noch nicht gelöst zu haben, obwohl ich es mal Mark Russinovich, der ja für seine vielen netten Helferleins für Windows bekannt ist, schilderte. Mehr als ein Dank kam nicht als Reaktion. Allerdings benutze ich für bzw. seit Windows>XP nur 64-Bit-Versionen. Auf diesen funktioniert dieses Programm mit globalem Hook nicht. Zugegeben, ich versuchte es sowohl mit Lazarus als auch mit Delphi für 64 flotzumachen, aber das gelang mir nicht, sodaß ich es irgendwann aufgab. Diese 32-Bit-Version habe ich nicht mehr nennenswert weiterentwickelt, sodaß sie mit "Beta 18" stehenblieb. Es funktionierte nie so ganz zu meiner Zufriedenheit. Vielleicht liegt es daran, daß es mein erstes größeres Projekt war - für das ich mit DLL-/Hookprogrammierung ziemlich mutig, ja kühn war - vielleicht aber auch daran, daß sich so etwas nicht besser hinbekommen läßt. Am unangenehmsten habe ich in Erinnerung, daß das Programm irrigerweise die Tastenkombination zum Acrobat-Reader schickt (und der dann mit immenser Verkleinerung der Darstellung reagiert), obwohl das ja eigentlich nicht passieren dürfte. Ich werde also auch nichts mehr daran herumprogrammieren. Ein optionaler Autostart ist aber enthalten, er müßte, sofern aktiviert, über die Registrierung erfolgen (soweit ich mich entsinne). Vielleicht wurde der registrierungsinterne Pfad in den neueren Windows verändert? Weiß ich nicht. Könnte man sonst vielleicht "manuell" über Autostart im Startmenü starten. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:00 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