Thomas Wölfers Baustatik-Blog

Thomas Wölfers Baustatik-Blog

OnKeyDown() - geht nicht immer so wie erwartet


Ich bin sicherlich nicht der einzige der gerne hätte, das die selbst programmierten Dialogboxen geschlossen werden, wenn die Dialogbox gerade Focus hat und Escape gedrückt wird: Das ist das Verhalten, was jedermann bei einer Dialogbox erwarten würde.

Windows.Forms hat dafür Eventhandler, in denen man sich ums schließen kümmern kann: Dabei gibt es drei Handler, von denen der fürs KeyDown-Event der 'offensichtliche' ist. Nur wird der leider nie aufgerufen - und kann daher für den geschilderten Fall auch nicht verwendet werden.

Der KeyDown Event tritt nämlich ein nachdem eine Taste gedrückt wurde und zwar beim Control das gerade Fokus hat.

Die Form sieht dieses Event also NIE. (Bin gerne bereit mich belehren zu lassen, denn vielleicht gibt es schon einen Fall bei dem das Event eintritt, im Normalfall tut es das jedenfalls nicht. Es wäre natürlich schön, wenn das in der Dokumentation irgendwo stehen würden. :-( ) Mit anderen Worten: Um eine Dialogbox per ESC schließen zu können, ist KeyDown das falsche Ereignis.

Statt dessen macht man folgendes: Man überlädt ProcessDialogKey. Zum Beispiel so:

protected override bool ProcessDialogKey(Keys keyData)
{
   if (keyData == Keys
.Escape)
   {
      this
.Close();
      return true
;
   }
   return base
.ProcessDialogKey(keyData);
}

Noch kurz was anderes: Ich baue mitlerweile alle meine Testprojekte mit Visual C# 2005 Express (Beta). Bin wirklich begeistert.


So kommen die Updates auf den Server


Immer wenn es für unsere Baustatiksoftware neue Updates gibt können Sie sich auf verschiedene Arten darüber informieren lassen:

  • Wenn Sie unsere 'News' Mailing-Liste abonniert haben, dann bekommen Sie beispielsweise ganz automatisch eine Mail - und zwar jedesmal wenn neue Versionen oder Programme verfügbar sind.
  • Wenn Sie lieber auf einer Webseite nachsehen, dann können Sie einfach hin- und wieder das Update-Protokoll besuchen. Dort finden Sie alle Updates nach Datum sortiert aufgelistet.
  • Oder Sie verwenden das Update-Blog meines Bruders: Das können Sie per RSS (also fast so wie eMail) oder per Web-Browser lesen. (Was ist RSS?)

Wie aber kommt die neue Statiksoftware auf den Server?

Grundsätzlich kann man da zwei grobe Schritte unterscheiden - der erste Teil der Update-Produktion fängt nämlich in unserer Niederlassung in Oberhausen an; der zweite Teil findet dann hier in München statt. Über den ersten Teil wird sich mein Bruder bei Gelegenheit äußern, ich schreibe ein wenig etwas über den zweiten Teil.

Was in München ankommt ist bereits die fertige Software: Die geht hier per eMail ein, und zwar in Form von fertig übersetzten .EXE oder .DLL Dateien. Bei der Gelegenheit werden die Dateien direkt noch einmal auf Viren untersucht. Das ist das ganz normale Vorgehen auf unserem Mailserver.

Letztlich landen die Programmdateien dann in einer ganz normalen Inbox auf dem Rechner eines Entwicklers. Das nützt aber nichts: Die Software muss ja hinterher installierbar werden - auf Basis der 'neuen' Dateien muß also erst einmal ein neues Installationsprogramm hergestellt werden.

Dafür haben wir einen separaten Rechner der weitestgehend vom normalen Netzwerk getrennt ist, und der ausschließlich dafür zuständig ist die Installationsprogramme zu bauen: Gebaut werden sowohl die CD-Images, als auch die einzelnen Installationspakete. Der 'Setup' Rechner hat dazu von allen Dateien immer die aktuellsten Versionen.

Die neuen Dateien werden also nun auf den 'Setup' Rechner übertragen, und dort wird dann ein automatisierter Vorgang angestossen, in dessen Zuge alle Installationsprogramme von denen neue Versionen benötigt werden neu erstellt werden. Dazu verwenden wir ein Toolkit von Wise.

Sind die Installer fertig, dann werden Sie vom Setup-Rechner auf den öffentlichen Download-Rechner transportiert. Dabei handelt es sich um den ganz normalen D.I.E. Webserver auf dem auch die sonstigen Informationen über unsere Statikprogramme liegen.

Alle auf dem Webserver vorliegenden Download-Dateien können Sie dann direkt über die Download Seite ansehen. Zu diesem Zeitpunkt sind die neuen Dateien also bereits zu haben: Nur wissen tut das natürlich noch niemand - darum gibt es dann noch einen weiteren Arbeitsschritt. Mit Hilfe eins Web-Interfaces wird nämlich nun der Versand der Hinweis-EMail angestossen - 'Es gibt neue Software auf www.die.de'. Deren Versand dauert nochmal etwa 5 bis 10 Minuten: Das schließt den Update-Vorgang dann ab und die Downloads können beginnen.


Auch nicht schön: WindowsFormsParkingWindow


Ist mir vorhin im Visual Studio 2003 'aufgefallen' - nachdem ich ungefähr eine Stunde lang auf meiner Seite nach einem Fehler gesucht habe: Man kann einen Fall erzeugen, bei dem der Wechsel aus der eigenen Anwendung und wieder zurück (per Alt-Tab) dazu führt das die eigenen Anwendung sofort einfriert.

Wer auch so ein Problem hat, der schaut besser einmal kurz in die Taskliste und sucht nach einem WindowsFormsParkingWindow:

Dazu gehört ein unsichtbares Fenster, das man natürlich auch sichtbar machen kann (Spy++ ist dabei das Tool der Wahl). Sichtbar sieht das Ding (beim mir) wie folgt aus:

Und warum bringt das Ding nun die eigene Anwendung zum einfrieren? So ganz im klaren bin ich mir nicht - ich denke aber folgendes erklärt die Sache eingermassen:

Wenn man ein Kontroll-Element von einer Form entfernt, dann wird dieses Control eben im WindowsFormsParkingWindow untergebracht. Sinn der Sache ist wohl, das man das Control dadurch hinterher wieder einfach relativ leicht wiederverwenden kann - falls man es nämlich wieder auf einer Form einfügt.

Das Problem: Wenn das Control Focus hat während es auf die andere Form transferiert wird, dann verbleibt der Focus bei diesem Control. Dummerweise ist die neue 'Parent' Form eben das WindowsFormsParkingWindow - und das ist unsichtbar. Es gibt also keine Events mehr: Die Anwendung ist dann tot.

Lösung: Vor dem entfernen des Controls den Focus auf ein anderes Control - zum Beispiel das Parent des Controls - setzen.

Es wäre natürlich schön gewesen, wenn man bei Microsoft irgendwas zum Thema hätte finden können. Man bekommt aber das hier.


Windows XP SP2 DVD für Entwickler


Dariusz schreibt hier wie man an die Windows XP SP2 DVD für Entwickler kommt. Ich habe das Ding hier vorliegen (kam heute netterweise ganz ohne Anforderung per Post...) und folgendes ist drauf:

  • Service Pack 2 RC1 und zugehöriges Platform SDK
  • Service Pack 2 RC2 ohne zugehöriges SDK
  • Diverse Whitepaper die die Aenderungen beschreiben, größtenteils auf englisch
  • Einige Webcasts (teilweise deutsch) die die Aenderungen beschreiben
  • Material das sich speziell an Softwareentwickler wendet und z.B. Beschreibt wie man das Remote Debugging unter dem SP2 wieder zum leben erweckt

Um genau zu sein: Die DVD ist ein Abbild der online verfügbaren SP2 Portalseite.

Wer selbst programmiert und das SP2 noch immer nicht ausprobiert hat, der kann sich mit Hilfe der (kostenlosen) DVD zumindest das Download des etwa 260 MB großen RC2 sparen. Im August ist bereits mit der endgültigen Version des SP2 zu rechnen.


Vodafone will offenbar keine UMTS Kunden


Wie ich hier bereits geschrieben habe, bin ich mit meiner Vodafone GPRS Karte eigentlich hoch zufrieden. Nach einigen Stunden Regen beim letzten Kurzurlaubs-Versuch würde ich aber nun doch ganz gern auf die UMTS/GPRS Kombination ausweichen, und Vodafone bietet diese Kombi-Karte ja auch an.

Nachdem die für UMTS ja nun weiss Gott viel Geld ausgegeben haben (naja: eigentlich ja nicht, weil einige Milliarden Abschreibung ja nun auch nicht sooo schlecht für den Laden sind) und dafür auch Reklame wie blöde machen, sollte man eigentlich annehmen das die auch ganz gern Kunden dafür gewinnen wollen. Oder - das ist ja einfacher - vorhandene Kunden auf UMTS upgraden.

Tut Vodafone aber nicht. Meine Rückfrage, was denn ein Upgrade kosten würde (ist mir ja klar das ich die UMTS Karte nicht geschenkt bekomme) wurde ganz einfach beantwortet: Das geht nicht. Ende der Antwort.

Das UMTS-Angebot: Ich soll doch einfach einen neuen (zusätzlichen !) Vertrag abschließen. Ich war nun eigentlich davon ausgegangen das ich halt so eine Karte kaufe und Vodafone den vorhandenen Vertrag auf das (teurere... ) UMTS umstellt. Aber auch die zweite Rückfrage wurde abschlägig beantwortet.

Offensichtlich hat man bei Vodafone einfach kein Interesse an UMTS Kunden, egal wie einfach man die gewinnen könnte.


Wie funktioniert die Abrechnung bei Work&Cash


Wenn Sie unsere Statikprogramme mit dem Work&Cash Verfahren einsetzen, dann ist das folgende vermutlich von Interesse. Verwenden Sie hingegen eine Kaufversion oder eine kostenlose Studentenversion, dann suchen Sie sich jetzt besser schnell was anderes zu lesen... :-)

Bei Work&Cash wird ja nur die reine Arbeitszeit mit den Programmen berechnet. Dazu haben Sie auf Ihrem Rechner (oder auf einem Rechner in Ihrem LAN) die TimeServer Software laufen. Diese verwaltet Ihr Zeitguthaben. Computer auf denen diese Software läuft erkennen Sie daran, das es da ein kleines rotes 'D' in der Taskleiste gibt:

Immer wenn Sie eines unserer Programme starten nimmt das Programm Kontakt mit dem Zeitserver auf. Wenn Sie das Programm beenden, dann meldet es sich beim Zeitserver ab. (Das ist zumindest das grobe Vorgehen - in der Praxis ist die Sache schon ein wenig komplizierter.)

Läuft das Programm, dann wird also Zeit 'verbraucht'.

Nun ist es aber so, das man häufig mehrere Programme gleichzeit benötigt. Man will vielleicht einen Durchlaufträger eingeben, braucht dazu aber Daten aus einem Tragwerk, einer Scheibe und einer Stahlbetonstütze.

Effektiv sind also vier Programme geöffnet. Dabei wird aber eben NICHT auch die vierfache Zeit verbraucht. Die Abrechnung erfolgt anders.

Der TimeServer weiss nämlich, das mehrere Programme gleichzeitig betrieben werden - und rechnet dann auch nur immer ein Programm ab. Effektiv läuft der Zähler also dann an, wenn Sie das erste Programm starten und stoppt wieder, wenn Sie das letzte Programm beenden. In welcher Reihenfolge das passiert und wie viele der Baustatikprogramme dabei zum Zuge kommen ist egal.


Logbuch-Einträge mit Notepad


Eines der Programme von Windows die ich am allermeisten verwendet ist das Programm 'Notepad'. Man kann damit praktisch alle Dateien bearbeiten die ich bearbeiten muss, das Programm ist auf jedem Windows-PC vorhanden und obendrein kann man es extrem schnell starten.

Und - es hat eine prima Funktion, die weitgehend unbekannt ist: Man kann damit nämlich auch ganz einfach Logbuch-Einträge vornehmen. Wenn man einen Datei anlegen will bei der jeder Eintrag mit dem aktuellen Datum und der aktuellen Uhrzeit versehen ist - dann legt man ein solches Logbuch an.

Nun kann man Datum und Uhrzeit immer von Hand eintippen, oder man teilt Notepad mit, das es sich bei der aktuellen Datei um eine Log-Datei handelt. Das geht ganz einfach: Alles was man tun muss ist in der ersten Zeile der Datei ganz links am Rand den Text  .LOG eingeben. Steht dieser Text drin, dann hängt Notepad jedesmal wenn man die Datei öffnet automatisch das aktuelle Datum und die aktuelle Uhrzeit an.

Nicht der komfortabelste Weg aller Zeiten - aber wenn man nur eine einfache Liste braucht, dann ist das ganz genau das richtige.

Bevor es das Update-Protokoll bei den Downloads für unsere Statiksoftware gab, habe ich damit relativ lange die Liste der Veränderungen mitgeführt.




Baustatik Demoversion ausprobieren »