AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Vollautomatische Spaltenbreitenanpassung in Fenstern
Thema durchsuchen
Ansicht
Themen-Optionen

Vollautomatische Spaltenbreitenanpassung in Fenstern

Ein Thema von Delphi-Laie · begonnen am 14. Apr 2008 · letzter Beitrag vom 23. Nov 2017
Antwort Antwort
Seite 2 von 3     12 3      
Delphi-Laie
Registriert seit: 25. Nov 2005
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.
Angehängte Dateien
Dateityp: rar AutoSetColumnsWidth - Beta 18 - Quelltexte.rar (27,9 KB, 40x aufgerufen)
Dateityp: rar AutoSetColumnsWidth - Beta 18 - Dateien für Programmbetrieb.rar (169,5 KB, 55x aufgerufen)

Geändert von Delphi-Laie (15. Dez 2010 um 12:18 Uhr)
 
Delphi-Laie

 
Delphi 10.1 Berlin Starter
 
#11
  Alt 16. Apr 2008, 15:31
Zitat:
Mir geht es nicht um Malware.
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?
1. Die wichtigen Verzeichnisse sollte Windows doch eigentlich schützen?! Na ja, vielleicht nicht gut genug...
2. Natürlich hätte ich umwandeln können, aber ist das nun auch noch ein Problem?
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms

 
Delphi XE Professional
 
#12
  Alt 16. Apr 2008, 15:42
Wie wäre es, das Programm Open-Source zu machen?
Thomas
  Mit Zitat antworten Zitat
Delphi-Laie

 
Delphi 10.1 Berlin Starter
 
#13
  Alt 17. Apr 2008, 13:03
Zitat von toms:
Wie wäre es, das Programm Open-Source zu machen?
Könnte ich Kürze passieren. Allmählich freue ich mich mit diesem Gedanken zunehmend an, bald werde ich "Gern!" antworten und es tun. Ich frage mich allerdings, wer Lust hat, in meinen Quelltexten "herumzurödeln". Du etwa/vielleicht? Falls ja, würde es mich freuen, und dann ist meine Hemmschwelle noch niedriger, diese herauszurücken. Allzuviel "knoff hoff" eigener Colour steckt dort, wie sollte es bei einem Delphi-Laien auch anders sein, nämlich nicht drin, es war eher eine Fleíßarbeit. Das Grundgerüst der DLL sind die Hook-Prozeduren von Assarbad, dieses Grundgerüst desweiteren garniert mit einer Prozedur von Luckie. Beide Vollprofis sind in diesem Kreise sicher bestens bekannt. Natürlich nicht zu vergessen die exzellente CoolTrayIcon-Komponente, um ein Hintergrundprogramm zurechtzubasteln. Also viel zusammenkopiert, worauf ich gar keine Urheberechte erheben kann, darf und möchte.

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: Glob.Variablenzugr.i.zeigerübergebenen/hookinitiierten Funk.. Es lassen sich zwar über den Funktionsaufruf der Hookinitialisierungsfunktionen Variablen in die DLL einschleusen, diese stehen dort allerdings nicht global zur Verfügung. Allerdings müßte ich diese Steuerung über Dateien nunmehr soweit zurechtgefummelt haben, daß es stabil ist.
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....
  Mit Zitat antworten Zitat
hoika

 
Delphi 10.4 Sydney
 
#14
  Alt 17. Apr 2008, 19:58
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
Heiko
  Mit Zitat antworten Zitat
gmc616

 
Delphi 10.3 Rio
 
#15
  Alt 17. Apr 2008, 23:51
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'.



Edit: Ach ja. WinXp Sp2
  Mit Zitat antworten Zitat
Delphi-Laie

 
Delphi 10.1 Berlin Starter
 
#16
  Alt 18. Apr 2008, 09:46
Zitat von hoika:
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
OK, vielen Dank, mit diesem Interesse hatte ich nicht gerechnet.

Mein Programm ist nunmehr Open Source:Vollautomatische Spaltenbreitenanpassung in Fenstern

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.
  Mit Zitat antworten Zitat
Delphi-Laie

 
Delphi 10.1 Berlin Starter
 
#17
  Alt 18. Apr 2008, 10:00
Zitat von gmc616:
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'.



Edit: Ach ja. WinXp Sp2
Vielen Dank!

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
  Mit Zitat antworten Zitat
hoika

 
Delphi 10.4 Sydney
 
#18
  Alt 18. Apr 2008, 10:15
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
Heiko
  Mit Zitat antworten Zitat
Delphi-Laie

 
Delphi 10.1 Berlin Starter
 
#19
  Alt 18. Apr 2008, 10:16
Danke, Heiko! Das funktioniert auch bei mir wunderbar...
  Mit Zitat antworten Zitat
ibo1a
 
#20
  Alt 23. Nov 2017, 07:18
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:36 Uhr.
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