Artikel von Stefan A. Dittrich
Als Abonnent haben Sie vollen Zugriff auf alle Artikel im Archiv.
Zum Download eines Artikels und/oder der zugehörigen Quelltexte, klicken Sie
den gewünschten Artikel einfach an.
(
dotnetpro 11/2007,
Seite 20)
Client-Server-Architekturen sind nicht mehr nur für große Unternehmen sinnvoll.
Dank .NET ist der Zugriff auf Serverdaten und -funktionen schon mit wenigen Zeilen
Code zu realisieren. dotnetpro zeigt einige praktische Ansätze.
(
dotnetpro 08/2007,
Seite 82)
Die vorangegangenen Teile dieser Reihe zeigten die Technik der Klassenvererbung und
-erzeugung. Dieser Teil widmet sich speziellen Details und zeigt die OOP-Finessen
auch gleich in einem praktischen Beispiel: die Ableitung eines Steuerelements.
(
dotnetpro 07/2007,
Seite 90)
Objekte lassen sich auf verschiedenste Arten erzeugen – nicht nur mit dem Schlüsselwort
New. Das objektorientierte Visual Basic .NET bietet dazu mannigfaltige Möglichkeiten.
Welche davon die passende ist, hängt vom jeweiligen Anwendungsfall ab – und manchmal
auch von den Vorlieben des Programmierers.
(
dotnetpro 06/2007,
Seite 81)
Die Objektorientierung in Visual Basic 6 war immer schon etwas stiefmütterlich und unvollständig.
Visual Basic .NET dagegen bietet echte OOP und eröffnet damit ganz neue
Möglichkeiten. Begleiten Sie den Autor bei seiner Reise zu „echter“ OOP und betreten Sie
ein neues Land.
(
dotnetpro 02/2007,
Seite 104)
Wer mit VB 6 nicht weiterkam, griff direkt auf das Win32-API zu.
Vieles davon ist unter VB.NET nicht mehr nötig, aber möglich ist es immer noch. Die letzte Folge dieser Reihe widmet sich dem Win32-API und solchen Dingen wie Messages, Subclassing, Fenster-Handles und Device Contexts – aus der Perspektive von VB.NET.
(
dotnetpro 01/2007,
Seite 110)
Mit VB.NET ist der Zugriff auf Schnittstellen einfacher als unter VB 6. Aber diese Einfachheit hat ihren Preis: Threading probleme sind zu lösen.
(
dotnetpro 12/2006,
Seite 108)
Nicht immer ist eine vollständige Migration von VB 6 nach VB.NET möglich. Auch Zwischenlösungen sind machbar, etwa das Einbinden von Windows-Forms-Fenstern in VB-6-Projekte. Ein Toolkit von Microsoft erleichtert diese Aufgabe.
(
dotnetpro 11/2006,
Seite 107)
Leichter landen
Ist das Projekt endlich fix und fertig, muss es noch auf das Ziel system gebracht werden. In VB 6 gab es hierzu einen speziellen Assistenten. Visual Studio 2005 bietet einen eigenen Projekttyp.
(
dotnetpro 10/2006,
Seite 118)
Bindungswillig
Eine Datenmaske erstellen Sie in VB 6 und VB.NET, ohne eine einzige Zeile Code schreiben zu müssen. Die direkte Migration einer solchen Maske ist jedoch nicht möglich – da ist Handarbeit gefragt.
(
dotnetpro 09/2006,
Seite 120)
Vernebelter Code
Hat der Anwender eine gültige Softwarelizenz? Das eigene Lizenzierungssystem prüft unbestechlich. Aber ach! Der Code der Prüfroutine ist ja offen lesbar! Unter .NET helfen Obfuscatoren, den Code zu verschleiern.
(
dotnetpro 08/2006,
Seite 106)
Mit VB.NET geht alles schneller? Im Prinzip ja, aber wenn man sich nicht auskennt, läuft das Programm nach der Umstellung sogar -langsamer. Stefan verrät, wie Sie bei lahmen Anwendungen den Turbo einschalten.
(
dotnetpro 07/2006,
Seite 98)
Verschieden verpackt
Daten? Braucht jedes Programm. Manchmal liegen sie in der Registry. Oder in einer INI-Datei. Oder sind noch anders verpackt. Auf dem Weg von VB 6 zu VB.NET sollen sie jedenfalls nicht verloren gehen. Stefan weiß, wie‘s geht.
(
dotnetpro 06/2006,
Seite 106)
Late Binding, CallByName & Co.
In VB 6 sind Serverobjekte leicht zu handhaben, und zwar selbst dann, wenn sie zur Entwurfszeit noch nicht bekannt sind. Prinzipiell funktioniert das auch in VB.NET ist aber hier nur über Umwege möglich. Richtig heikel ist jedoch das Bereitstellen von Serverobjekten. Und für DDE gibt es gleich gar keine Entsprechung mehr.
(
dotnetpro 05/2006,
Seite 84)
Print, Autoredraw & Co.
Bei der Ausgabe auf Bildschirm und Drucker weichen VB 6 und VB.NET besonders stark voneinander ab. Mit einigen Hilfsklassen gelingt Stefan aber auch hier eine Migration mit vertretbarem Aufwand.
(
dotnetpro 04/2006,
Seite 108)
Migrationsprobleme ade
Der Anfang ist geschafft, Stefan taucht nun tiefer ein in VB.NET. Er entdeckt dabei, dass sich viele Probleme beim Umstieg von VB 6 auf VB.NET ganz einfach beheben lassen. Lesen Sie in diesem Teil, wie Sie Migrationshindernisse schnell aus dem Weg räumen.
(
dotnetpro 03/2006,
Seite 98)
Von VB 6 auf VB.NET umsteigen
In jüngster Zeit häufen sich für die VB-6-Gemeinde die Hiobsbotschaften: Microsoft stellt den Support für VB 6 ein, es sind keine weiteren Service Packs zu erwarten und so weiter. Es ist traurig, aber wahr: VB-6- Entwickler befinden sich auf dem absteigenden Ast. Damit ist es allerhöchste Zeit, auf VB.NET umzusatteln. dotnetpro lässt Sie in dieser Situation nicht allein, denn auch Stefan steigt um!
(
dotnetpro 10/2005,
Seite 74)
Wird ein Rechner in den Standby- oder Ruhezustand geschickt, bekommen die meisten Programme das gar nicht mit. Manchmal ist es aber notwendig, dies zu erkennen. dotnetpro zeigt, wie Ihr Rechner wach bleibt, auch wenn der Pausengong ertönt.
(
dotnetpro 7-8/2005,
Seite 98)
Die Eingabe eines Kennworts in einer Textbox mit definiertem PasswordChar ist zwar optisch nicht lesbar, aber trotzdem leicht auszuspionieren. Die nötige Spionagetechnik beruht auf der Windows-API oder Messaging. Modifizierte Eingabefelder schließen diese Sicherheitslücke weitgehend.
Die meisten Passworteingaben werden mit einer Textbox realisiert, deren PasswordChar-Eigenschaft auf ein Sternchen gesetzt ist. Ob nun eine gespeicherte Vorgabe eingetragen oder vom Anwender ein Passwort eingegeben wird: Der Text ist nicht lesbar. Jedenfalls nicht für Menschen.
(
dotnetpro 2/2005,
Seite 99)
Eigentlich hieß es, dass bei Visual Basic .NET die aus Bequemlichkeit gern verwendeten Standardeigenschaften von Objekten entfallen würden. Dennoch gibt es diese Standardeigenschaften auch in .NET, und sie lassen sich sogar vom Entwickler definieren.
(
dotnetpro 2/2005,
Seite 98)
Eine Dropdown-Liste oder Combobox zeigt beim Anklicken eine Liste mit möglichen Werten an. Manchmal ist diese Liste zu schmal, um die Inhalte darzustellen, aber dieses Manko lässt sich einfach beheben.
(
dotnetpro 2/2005,
Seite 54)
Viele Funktionen greifen auf die sprachliche Repräsentation von Objekten über die ToString-Methode zu. Damit diese auch sinnvolle Ergebnisse liefert, bietet es sich des Öfteren an, sie zu überladen. Im Grunde ist das recht einfach, wenngleich unter Visual Basic .NET dabei auch eigenartige Effekte auftreten können – ganz im Gegensatz zu C#.
(
dotnetpro 12/2004,
Seite 112)
INSERT Murks?
Möglicherweise haben Sie es noch gar nicht bemerkt, aber wenn Sie mithilfe von SQL-Anweisungen Texte in Datenbanken eintragen, spielt deren Zusammensetzung eine entscheidende Rolle. Bestimmte Sonderzeichen verwirren ADO.NET, und der SQL-Aufruf kann scheitern. Mit einem einfachen Trick sichern Sie sich ab.
(
dotnetpro 11/2004,
Seite 104)
Das Laden und Speichern von Bildern ist über die jeweiligen Methoden ein Kinderspiel. Soll der Anwender jedoch ein beliebiges Dateiformat auswählen können, stellt sich die Frage, über welche Formate und Codecs das System eigentlich verfügt. Diese Frage ist leicht zu beantworten.
(
dotnetpro 11/2004,
Seite 105)
Die in Visual Studio .NET angezeigten Verweise geben die Assemblies an, mit denen das aktuelle Projekt verknüpft ist. Zur Fehlersuche beim Kunden kann es sehr hilfreich sein, all diese Abhängigkeiten nebst Versionen auch zur Laufzeit sichtbar zu machen.
(
dotnetpro 9/2004,
Seite 99)
Prozessorschoner
Auch im Zeitalter der ereignisorientierten Programmierung werden Warteschleifen eingesetzt. Sie sind nötig, wenn das Programm eine bestimmte Zeit lang oder auf einen bestimmten Zustand warten soll. Mit einem Trick können Sie die Prozessorlast solcher Wartschleifen drastisch reduzieren.
(
dotnetpro 9/2004,
Seite 30)
Fehler zur Unzeit
Mit Try…Catch-Blöcken lassen sich Ausnahmen behandeln. Diese Methode funktioniert aber nur, wenn der Code auch tatsächlich ausgeführt wird. Verursacht hingegen bereits der JIT-Compiler einen Fehler, scheitert dieses Verfahren. dotnetpro zeigt die einfache Lösung.
(
dotnetpro 9/2004,
Seite 24)
Notausgang
Auch in den besten Programmen kommt es zu Fehlern. Im schlimmsten Fall führt ein Absturz zu unkontrolliertem Datenverlust. Aber dieser Anwendungs-GAU lässt sich verhindern, wenn ein zentraler Exception-Handler auch unerwartete Fehler abfängt. dotnetpro zeigt, wie Sie in Ihre Anwendungen einen Notausgang einbauen.
(
dotnetpro 6/2004,
Seite 108)
Stilwandel
Die Optik von Dialogen und Steuerelementen unter Windows XP lässt sich über ein Manifest aktivieren – dotnetpro berichtete bereits darüber. Seit dem .NET Framework 1.1 ist es allerdings auch möglich, auf das Manifest zu verzichten.
(
dotnetpro 6/2004,
Seite 105)
Nummern mit Namen
Schon in alten VB-Zeiten haben Enumerationen für Werteauflistungen das Programmieren erleichtert und den Code lesbarer gemacht. Im .NET Framework sind solche Enumerationen noch erheblich vielseitiger geworden.
(
dotnetpro 5/2004,
Seite 94)
Vatermord vor offenem Fenster
Die Anzeige eines Formulars mit Angabe eines Owner-Fensters ist eine gängige Technik. Soll jedoch aus diesem Kindfenster heraus der Owner geschlossen werden, kommt es leicht zu einem Hänger. Mit einem kleinen Trick lässt sich dies jedoch vermeiden.
(
dotnetpro 3/2004,
Seite 103)
Fang die Maus
Das Einbinden einer Mauszeiger-Datei in die MouseIcon-Eigenschaft ist einfach. Es hat den Nachteil, dass sich keine animierten Mauszeiger aus ANI-Dateien einbinden lassen. dotnetpro zeigt, wie das mit einem einfachen Trick dennoch möglich ist.
(
dotnetpro 3/2004,
Seite 102)
XP-Stil betreiben können.
Verwandlungskünstler VB6-Programme lassen sich per Zusatzdatei oder in die Ressourcen eingebundenes Manifest im XP-Look erstellen. Das Erscheinungsbild lässt sich aber nur über die kompilierte exe-Datei testen, was den Entwurf erschwert. dotnetpro verrät einen Trick, wie Sie auch die VB6-IDE selbst im
(
dotnetpro 3/2004,
Seite 98)
Kontrolle über das Rudel
Der Mechanismus der Control-Arrays in Visual Basic ist eine wunderbare Sache, um zusammengehörende Steuerelemente als Gruppe zu verwalten. Man kann sie zur Entwurfszeit oder dynamisch zur Laufzeit verwalten, wodurch ein flexibles Design stark erleichtert wird. dotnetpro zeigt, wie es geht.
(
dotnetpro 2/2004,
Seite 88)
Nur für meine Augen bestimmt
Testfunktionen in ein Programm zu integrieren, gehört zur alltäglichen Arbeit eines jeden Entwicklers. Da der Anwender diese Funktionen aber keinesfalls zu sehen bekommen sollte, müssen sie vor dem Release wieder entfernt werden. Um dieses lästige „Rein und Raus“ zu umgehen, bieten sich verschiedene Ansätze an.
(
dotnetpro 2/2004,
Seite 86)
Die Ungeduld zügeln
Wenn Prozesse mal etwas länger dauern, sollte der Anwender informiert werden. Das gehört zum guten Ton. Ist die Dauer des Prozesses aber nicht bekannt, sollte dies mit einer Verzögerung geschehen.
(
dotnetpro 9/2003,
Seite 126)
Die große weiße Fläche, die ein spärlich gefülltes ListView-Element anzeigt, ist nicht nur langweilig, sondern auch ergonomisch fragwürdig. Einige Programme schaffen es, hier ein Hintergrundbild als Wasserzeichen anzuzeigen. Auch in Visual Basic 6 ist dies möglich, wenn auch mit kleinen Hindernissen.
(
dotnetpro 7/2003,
Seite 124)
Die ansprechenden Transparenz- und Abblendungseffekte von Windows XP sind nicht nur effektiv, sondern auch relativ leicht in eigene Programme integrierbar. Durch einfache API-Aufrufe lassen sich Alphablending und Transparenz unter Windows 2000 oder XP realisieren.
(
dotnetpro 7/2003,
Seite 114)
Das dynamische Einbinden von Zusatzfunktionen geschieht üblicherweise über Plug-ins. Hierfür gibt es verschiedene Ansätze, die jedoch meist eine ActiveXEXE erfordern. Dass aber auch eine Standard-EXE verwendet werden kann, zeigt dieser Beitrag.
(
dotnetpro 6/2003,
Seite 117)
Die Druckerauswahl per Common Dialog funktioniert nicht zuverlässig und hat manchmal keine Auswirkung auf das Printer-Objekt. Mit einem Trick lässt sich dieses Problem beheben.
(
dotnetpro 5/2003,
Seite 114)
Bei einer Größenänderung eines Fensters sind alle Elemente entsprechend anzupassen. Diese mühsame Arbeit kann Ihnen eine universelle Resizer-Klasse abnehmen, die einfach einzusetzen ist und dennoch Ausnahmen zulässt.
(
dotnetpro 5/2003,
Seite 104)
Das Begrenzen der Fenstergröße bei Formularen mit veränderbaren Rändern kann mit einigen Tricks und ein wenig Programmieraufwand professionell realisiert werden.