Das Bildinformations-Popupfenster

Verfasst am: Sonntag, 12. Feb. 2012 um 19:03

Dem aufmerksamen Leser dieses Blogs sollte bekannt sein, das ich mir als nächsten kleinen Meilenstein für das BVASystem, ein Popupfenster ausgesucht hatte, in dem Informationen zu dem jeweiligen Bild angezeigt werden. Dieses Bildinformations-Popupfenster ist nun in der Version 2.1.0.37-dev der Bilddatenbank endlich fertig.

Bildinformations-Popupfenster mit EXIF-Daten

Bildinformations-Popupfenster mit EXIF-Daten

Ich freue mich sehr, das ich nun dieses Fenster beim Betrachten meiner Fotos zur Verfügung habe. Endlich werden die gespeicherten Informationen angezeigt und ich kann nun mit nur einem Klick prüfen, welche Aufnahmebedingungen beim Fotografieren herrschten. Aktuell werden im Informations-Popupfenster die, meiner Meinung nach, 8 wichtigsten Daten aus dem Exif-Header angezeigt. Zu den 8 Parametern gehören:

  • Aufnahmedatum
  • Kamerahersteller/Kameramodell
  • Brennweite
  • Iso-Empfindlichkeit
  • Belichtungszeit
  • Blende
  • Abstand zum Objekt

Die Komponente, die zur Anzeige der Bildinformationen dient, ist allerdings so implementiert, das es später möglich sein wird, sich genau die Informationen anzeigen zu lassen, die man persönlich bevorzugt. Auch die Anzahl der Informationen ist nicht in Stein gemeißelt, ab dem 9ten Element wird einfach eine Scrollbar in dem Fenster angezeigt.

Außerdem habe ich in den letzten Tagen noch an dem Administrationstool weitergearbeitet. Ich habe für die Erstellung des BVASystem Datenbankschemas einen Optionsdialog erstellt, der alle notwendigen Informationen erfasst. Den Dialog werde ich allerdings erst in einem späteren Blog beschreiben, da die Implementierung der eigentlichen Funktionalität erst in den nächsten 2-3 Wochen ansteht.

Interne Änderungen

Verfasst am: Donnerstag, 02. Feb. 2012 um 22:19

Der aktuelle Versionssprung stand ganz im Zeichen der internen Änderungen. Notwendig wurden sie zum einen durch den Wechsel auf die ODBC-Technologie und zum zweiten durch das neu entstandene Administrationstool.

Welche Änderungen wurden vorgenommen?

Die erste größere interne Änderung betrifft die Herstellung einer Datenbankverbindung. Bisher war es so, das Servername, Datenbank, Nutzer und Passwort einzelnd benötigt wurden, um eine Datenbankverbindung herzustellen. Das ODBC-Konzept arbeitet dagegen mit sogenannten ODBC-Connectionstrings. Das sind Zeichenketten, die in irgendeiner Form die 4 oben genannten Parameter enthalten. Dummerweise hat der ODBC-Connectionstring für jedes Datenbanksystem einen anderen Aufbau. Daher habe ich nun eine “odbc.ini” angelegt, welche eine Sammlung von Verbindungsstrings enthält. Je nach eingestellter Datenbank wird einer ausgewählt und zum Herstellen der Datenbankverbindung genutzt. Der Vorteil daran ist, das wenn sich der Aufbau eines ODBC-Connectionstrings ändert, so brauch ich am Programm nichts ändern. Es reicht aus, wenn die “odbc.ini” angepasst wird.

Damit ich es beim Administrationstool leichter habe, habe ich die Handhabung der Einstellungsdateien komplett überarbeitet. Äußerlich hat sich an den Einstellungsdateien nichts geändert. Der Aufbau ist nach wie vor so, wie in der Installationsanleitung beschrieben. Aber gibt nun intern eine strikte Trennung zwischen allgemeinen Einstellungen, Einstellungen für das BVASystem und Einstellungen für das Administrationstool. Allgemeine Einstellungen sind zum Beispiel die Einstellungen für die gewählte Sprachdatei. Da ich sie für beide Programme benötige, habe ich den Vorteil das ich das Eintellungsobjekt doppelt verwenden kann. Außerdem erreiche ich durch die Trennung, das nur die Einstellungen gelesen bzw. geschrieben  werden, die wirklich benötigt werden.

Weitere Neuerungen

Alle weiteren Änderungen beziehen sich auf das noch relativ junge Administrationstool. Neu hinzugekommen ist dort die Auswahl des  Datenbanksystems, mit dem das BVASystem arbeiten soll. Bisher kann dort allerdings nur “Keine Datenbank” und “MySQL” ausgewählt werden. Weitere Datenbanksysteme werde ich nachtragen, sobald die notwendige Datenbankstruktur ebenfalls mit dem Administrationstool erstellt werden kann. Außerdem ist neu, das die im Adminstrationstool durchgeführten Aktionen und Aktionsergebnisse in einem Log erfasst werden.

Administrationstool: Datenbanksystem festlegen

Administrationstool: Datenbanksystem festlegen

Ausblick

In der nächsten Version ist zu erwarten, das das Popupfenster zur Anzeige von EXIF-Daten vorrangetrieben wird. Außerdem habe ich mir vorgenommen, im Administrationstool den Einstellungsdialog zur Erstellung einer BVASystem Datenbank zu gestalten. Die Funktionalität dahinter wird dann in den darauffolgenden Versionen erstellt. Eine ausführlichere Roadmap könnt ihr euch im Bugtracker anschauen.

Wie erstelle ich ein Popupfenster?

Verfasst am: Sonntag, 29. Jan. 2012 um 23:26

Popupmenüs kennt wohl jeder Windowsnutzer, aber warum sollte der Mechanismus nicht genutzt werden, um komplexere Aufgaben  zu übernehmen. Mit diesem Blog möchte ich kurz beschreiben, wie man ein Popupfenster erstellt, auf dem man dann beliebige Komponenten platzieren kann. Das Popupfenster basiert auf einem einfachen Formular, bei dem allerdings einige Dinge berücksichtigt werden müssen.

Keinen Rahmen

Damit das Popupfenster einem Popupmenü ähnlich sieht, darf das Formular keinen Rahmen haben. Setzt dafür einfach die Eigenschaft BorderStyle des Formulars auf bsNone. Zusätzlich platziere ich meist ein TPanel auf das Formular (alClient), damit ich einen sichtbaren Rand erhalte.

Schließen des Popups

Da das Forumlar keinen Rahmen besitzt, gibt es erstmal keine Möglichkeit, um dieses zu schließen, wenn es einmal angezeigt wird. Folgendes Event für  das Panel schafft Abhilfe:

procedure TfrmBVAImageInfo.pClientClick(Sender: TObject);
begin
 Close;
end;

Damit das Popup-Fenster ebenfalls geschlossen wird, wenn man außerhalb des Fensters auf die darunterliegende Anwendung klickt, wird folgendes Event benötigt:

procedure TfrmBVAImageInfo.FormDeactivate(Sender: TObject);
begin
 Close;
end;

Anzeige des Popupfensters

Damit das FormDeactivate Event ausgelöst werden kann, darf das Popupfenster nicht Modal geöffnet werden. Außerdem muss beim Anzeigen den Fensters die Position des Formulars, an die aktuelle Mausposition verschoben werden. Hierfür kann folgende Funktion genutzt werden:

procedure TBVAThumbnail.ShowImageInfo(aX,aY:Integer; aItem:TBVADLDataListItem);
begin
 if aX+FInfo.Width < Screen.DesktopWidth-10
  then FInfo.Left := aX
  else FInfo.Left := Screen.DesktopWidth-FInfo.Width-10;
 if aY+FInfo.Height < Screen.DesktopHeight -10
  then FInfo.Top  := aY
  else FInfo.Top  := Screen.DesktopHeight-FInfo.Height-10;
 FInfo.Show;
end;

FShow ist hierbei das Formular des Popupfensters und aX bzw aY die aktuelle Mausposition, die man aus dem jeweiligen Mausevent erhält, welches das Popup öffnen soll. Durch die beiden If-Abfragen wird sichergestellt, das das Popupfenster immer ganz sichtbar ist.

WMActivate

Zu guter letzt benötigt man noch einen kleinen Trick, damit während das Popupfenster angezeigt wird, das Hauptfenster der Anwendung weiterhin als aktives Fenster sichtbar bleibt:

procedure TfrmBVAImageInfo.WmActivate(var Msg: TWMActivate);
begin
  SendMessage(Application.MainForm.Handle, WM_NCACTIVATE, Ord(Msg.Active <> WA_INACTIVE), 0);
  inherited;
end;

Das fertige Popupfenster sieht dann wie folgt aus:

Bildinformationspopup

Bildinformationspopup

Das neue BVASystem Administrationstool

Verfasst am: Sonntag, 22. Jan. 2012 um 15:24

Mit der heutigen Programmaktualisierung befindet sich nun ein weiteres, zweites Programm in dem BVASystem-Installationspaket: Das BVASystem Administrationstool. Mit diesem Tool sollen später alle verwaltungstechnischen Datenbankaufgaben erledigt werden, wie zum Beispiel das Aktualisieren der Datenbankstruktur nach einem Softwareupdate. Aber gut, da noch keinerlei Datenbank-Strukturänderungen in Sicht sind, denn wenn man das Administrationstool startet, wird man es sehr schnell wieder schließen. Außer dem Beenden des Administrationstools ist noch keine weitere Funktionalität implementiert. Trotzdem steckt schon ein gutes Stück Arbeit drin, denn das Administrationstool ist, wie auch das BVASystem, mehrsprachen fähig. Die dafür notwendigen Konfigurationen habe ich für das Administrationstool erstellt und an einigen wenigen Zeichenketten umgesetzt.

Warum ich mich gerade jetzt entschlossenen habe, mit dem Administrationstool zu beginnen, habe ich im letzten Blog bereits kurz umrissen. Heute möchte ich näher auf die Funktionen eingehen, die ich mir für das Administrationstool vorstelle.

Einstellung von systemweiten Programmparametern

In der Konfigurationsdatei des BVASystems gibt es einige Parameter, die sich direkt auf die Datenbank auswirken. Zum Beispiel kann die Miniatur- und Vorschaubildgröße eingestellt werden. Da sowohl Miniatur- und Vorschaubilder in der Datenbank abgelegt werden, ist es wenig sinnvoll, wenn man diese Parameter jederzeit im Programm ändern kann.  Ich denke, das Administrationstool dagegen ist ein guter Platz um diese globalen Parameter einzustellen.

Datenbanksystem festlegen

Ich bin gerade dabei, das BVASystem so umzustellen, das es mehrere verschiedene Datenbanksysteme unterstützt. Welches Datenbanksystem der Client nutzen soll, wird im Administrationstool einstellbar sein.

Anlegen von Datenbanknutzern

Nach man sich auf ein Datenbanksystem festgelegt hat und der Server installiert ist, sollte noch mindestens 1 Datenbanknutzer angelegt werden, über den der Zugriff auf die BVASystem-Datenbank erfolgt.

Datenbankstruktur erstellen

Die wohl wichtigste Aufgabe des Administrationstools wird es sein, die für das BVASystem benötigte Datenbankstruktur zu erstellen. Die dafür notwendigen Datenbankscripte werden in das Tool integriert, so das ihr eigentlich nur noch auf “Start” drücken müsst.

Datenbankstruktur aktualisieren/anpassen

Wer einmal begonnen hat, mit dem BVASystem zu arbeiten, möchte natürlich auch neuere Versionen nutzen können, ohne das alle Daten neu eingestellt werden müssen. Von daher ist es wichtig, das ältere Datenbankstrukturen an neue Anforderungen angepasst werden können.

Backup und Wiederherstellung des Datenbestandes

Ebenfalls eine wichtige Funktion ist es, das beispielweise vor einer Datenbankstrukturänderung die Daten für den Notfall gesichert werden können.  Generell sollte aber jedem im klaren sein, wie sinnvoll bzw. wie notwendig regelmäßige Backups sind.

Welche dieser Funktionen wann verfügbar sein werden, kann ich noch nicht genau sagen. Aktueller Arbeitsschwerpunkt ist, das unterschiedliche Datenbanksysteme untersützt werden. Dafür benötige ich die Datenbanksystemauswahl und das Erstellen der Datenbankstruktur. Datenbankaktualisierungen sind vorerst keine in Sicht und für Backup/Restore kann man aktuell notfalls auf Datenbanksystem-Tools zurückgreifen.

Weitere Neuerungen

Auch wenn ich schon recht viel geschrieben habe, möchte ich noch kurz auf die weiteren Änderungen eingehen. In der Miniaturbilder und Filmstreifenansicht wurde der Werkzeugbuttonbereich komplett überarbeitet. Die Knöpfe werden nun genauso dargestellt, wie in den restlichen Menüleisten. Außerdem wurde das Bild beim Knopf zum Markieren eines Fotos ausgetauscht, da das alte “+” als “Bild importieren” missverstanden werden konnte. Neu ist ebenfalls der Knopf, der das zukünfige Popup-Bildinformationen-Fenster öffnet.

In den nächsten Tagen werde ich einen weiteren Blog zum PopUp-Fenster schreiben, in dem ich erkläre, wie man so einen Dialog implementieren kann. Außerdem habe ich jetzt eh bereits viel zu viel geschrieben :-D

Komponentenentwicklung: Nutzung vom VCL Style

Verfasst am: Donnerstag, 19. Jan. 2012 um 22:46

Heute ist es wieder einmal an der Zeit, einen kurzen technischen Artikel über Delphi zu schreiben. Und zwar geht es im Speziellen darum, wie man einzelne Elemente, die im VCL-Style definiert wurden, in eigenen Komponenten benutzen kann.

Ich nutze ganz gerne einfache Zeichenflächen um meine eigenen Komponenten zu entwickeln, da ich dort gestalterisch alle Freiheiten besitze. Um ein einheitliches Design zu gewährleisten, sollten hierbei aber trotzdem die VCL Style Elemente verwendet werden.

Um beispielsweise einen Knopf auf ein Bitmap zu zeichnen, kann man folgende Anweisungen benutzen:

if StyleServices.Available then begin
 //Auswahl des Styleelements
 case aMode of
  tpDown   : Details := StyleServices.GetElementDetails(ttbButtonPressed);
  tpUp     : Details := StyleServices.GetElementDetails(ttbButtonHot);
 end;
 //Zeichnen des Styleelements
 StyleServices.DrawElement(FBitmap.Canvas.Handle, Details, aButtonRect);
end else begin
 ... //Alternative Zeichenmethode, falls kein Style aktiv ist
end;

Mit der Variablen aMode wird festgelegt, ob der Button im gedrückten oder ungedrückten Zustand gezeichnet werden soll und aButtonRect definiert den Bildbereich über den sich der Button erstrecken soll.

Große Veränderungen

Verfasst am: Donnerstag, 12. Jan. 2012 um 22:24

Heute habe ich die erste neue Softwareversion des Jahres und auch gleichzeitig die erste Softwareversion, die mit dem RAD Studio XE2 erstellt wurde, fertiggestellt. Eines vorweg: Die Änderungen fallen diesmal größer aus, als ich gedacht habe.

Neue Optik

Auch wenn ich mit der neuen Optik des BVASystems so meine Anfangsschwierigkeiten hatte, so bin ich mit dem Ergebnis doch recht zufrieden. Die Anwendung sieht nun komplett anders aus, wirkt aber trotzdem irgendwie vertraut. Mein gewünschtes zweifarbiges Farbkonzept konnte ich besser umsetzen, als in der alten Entwicklungsumgebung. Insgesamt finde ich, sieht die Anwendung jetzt deutlich harmonischer aus.

Hauptdialog der Entwickler-Version 2.1.0.34-dev

Hauptdialog der Entwickler-Version 2.1.0.34-dev

Neuer Datenbankzugriff

Eine große nicht sichtbare Änderung betrifft den Datenbankzugriff. Mit dem Umstieg aufs neue Delphi stellte sich heraus, das der bisher benutze Datenbankzugriff nicht mehr praktikabel war. Denn durch die neuen Unicode Zeichenketten war es nicht mehr möglich, Umlaute in der Datenbank zu benutzen.

Daher habe ich mich entschieden, den Datenbankzugriff auf die ADO Technologie umzustellen. ADO ist eine  Datenbankzugriffstechnologie von Microsoft, bei der über ODBC die Verbindung zur Datenbank hergestellt wird. Der Vorteil daran ist, das man ohne großen Programmieraufwand zu unterschiedlichsten Datenbanksytemen eine Verbindung aufbauen kann. Um unterschiedliche Datenbanksysteme nutzen zu können muss nur der entsprechende ODBC-Treiber installiert werden.

Erste Tests zeigten, das Umlaute bei Fotoalben zum Beispiel wieder funktionieren. Ob der komplette Unicode-Zeichensatz benutzbar ist, muss allerdings noch getestet werden.

Installation des MySQL ODBC-Treibers

Damit die Datenbankverbindung per ADO/ODBC herstellt werden kann, benötigt ihr den MySQL ODBC Treiber in der Version 5.1. Nachdem das Setup ausgeführt wurde, sollte sich die Datebankverbindung wie gewohnt herstellen lassen. Weitere Einstellungen sind nicht erforderlich. Solltet ihr ein 64-Bit Betriebssystem haben, ist es ratsam sowohl die 32-Bit als auch die 64-Bit Variante des ODBC Treibers zu installieren. Da das BVASystem eine 32-Bit Anwendung ist, benötigt es natürlich auch den 32-Bit ODBC Treiber. Wenn ihr in den Systemeinstellungen die ODBC Konfiguration testen wollt, benötigt ihr auf einem 64-Bit System den 64-Bit ODBC Treiber.

Ausblick

Getrieben von den neuen Möglichkeiten möchte ich mich nun darauf konzentrieren, das schon lang vor mir hergeschobene Administrationstool für das BVASystem zu entwickeln. Außerdem benötige ich es jetzt eh bald, da ich die vorhandene Datenbankstruktur nicht mehr über den Haufen werfen kann und will. Langfristig möchte ich mit dem Administrationstool 3 Dinge erreichen:

  • Änderungen/Updates an der Datenbankstruktur sollen ohne großes Fachwissen durchführbar sein
  • Das Anlegen der BVASystem Datenbank soll generell einfacher werden
  • Schaffung einer Backup/Restore-Funktionalität, damit die gespeicherten Daten sicher sind

Ein Nebenprodukt des Admintools und der Umstellung auf ADO/ODBC wird sein, das ihr die Auswahl habt, auf welchem Datenbanksystem ihr das BVASystem betreiben wollt. Wenn beispielsweise bereits ein Firebird-Datenbankserver betrieben wird, wäre es sinnlos noch zusätzlich einen MySQL-Server zu installieren, da beide Server gewartet werden müssen. Sinnvoller wäre es, das BVASystem dann einfach auf Firebird aufzusetzen.

Damit das ganze in der Zwischenzeit nicht zu langweilig wird, werde ich in der Filmstreifen und Miniaturbildansicht das Informationsfenster implementieren. In diesem sollen die erfassten EXIF-Daten eines Bildes dargestellt werden.

Hintergrundfarbe eines TPanels ändern

Verfasst am: Sonntag, 08. Jan. 2012 um 17:53

Das ich bereits nach wenigen Tagen Entwicklung mit der neuen Umgebung an eine Grenze des machbaren stoße, hätte ich nicht erwartet. Und dabei geht es eigentlich um etwas total banales: Die Änderung der Hintergrundfarbe eines Panels.

Worin besteht das Problem?

Das Konzept von Embarcadero sieht vor, das bei aktivem VCL-Stil, das komplette Aussehen der Steuerelemente durch den VCL-Stil definiert wird. Will man trotzdem eine Eigenschaft ändern, die Auswirkungen auf die Optik hätte, so passiert einfach garnichts. Im speziellen: Die Hintergrundfarbe kann nicht geändert werden. Alle Panels sehen genauso aus, wie sie im VCL-Stil Editor eingestellt wurden.

Mein großes Problem dabei ist, das mein zweifarbiges Design mit den grauen und hellbraunen Panels mit dem VCL-Stil nicht umsetzbar ist. Ich brauche den VCL-Stil aber, damit die Windows-Defaults nicht die Farbgestaltung zunichte machen.

Wie kann man das Problem umgehen?

Da Embarcadero das Verhalten wohl nicht ändern will, habe ich mir einen Workaround für das Panel gesucht, da ich auf mein Wunschdesign nicht verzichten will. Der Workaround besteht darin, einfach auf dem Panel, welches eine andere Farbe erhalten soll, ein maximiertes TShape Element zu plazieren. Die Hintergrundfarbe kann dann über das TShape gesteuert werden, da das eigentliche Panel nicht mehr sichtbar ist.

Damit das TShape nicht bei jedem Panel manuell hinzugefügt werden muss, habe ich einfach fix ein TBVAShapePanel entwickelt, auf dem das TShape Element bereits vorhanden ist. Die Eigenschaft “Color” des Panels hab ich einfach überschrieben, da sie ja eh nutzlos gewesen ist. Das TShapePanel sieht wie folgt aus:

unit claBVAShapePanel;

interface

uses controls, SysUtils, classes, ExtCtrls, graphics;

type
 TBVAShapePanel = class(TPanel)
  private
   FShape  : TShape;
   FColor  : TColor;
  protected
   procedure SetColor(aValue:TColor);
  public
   constructor Create(AOwner: TComponent); override;
   destructor Destroy; override;
  published
   property Color:TColor read FColor write SetColor;
end;

procedure Register;

implementation

procedure TBVAShapePanel.SetColor(aValue:TColor);
begin
  FColor := aValue;
  FShape.Brush.Color := FColor;
end;

constructor TBVAShapePanel.Create(AOwner: TComponent);
begin
 inherited Create(AOwner);

 BevelKind          := bkNone;
 BevelOuter         := bvNone;
 FColor             := clRed

 FShape             := TShape.Create(Self);
 FShape.Parent      := Self;
 FShape.Align       := alClient;
 FShape.Brush.Color := FColor;
 FShape.Brush.Style := bsSolid;
end;

destructor TBVAShapePanel.Destroy;
begin
 FShape.Free;

 inherited Destroy;
end;

(******************************************************************************)

procedure Register;
begin
 RegisterComponents('BVA',[TBVAShapePanel]);
end;

end.

Natürlich kann das TBVAShapePanel noch nach belieben um weitere Eigenschaften erweitert werden. Anbieten würde sich zum Beispiel, das man den Rand des TShape ebenfalls variabel gestaltet.

Auch wenn ich für die Hintergrundfarbe nun eine Lösung gefunden habe, würde ich begrüßen, wenn Embarcadero sein Konzept nochmal überdenken würde. Prinzipell ist es richtig, das die Optik aus dem Stil geladen wird. Aber wenn zum Beispiel durch farbige Edit-Felder dem Anwender signalisiert werden soll, wo er fehlerhafte Daten eingetragen hat, so ist dies aktuell nicht möglich. Auch mit dem Trick mit dem TShape kommt man da wohl nicht weiter.

Neue Entwicklungsumgebung heißt neue Möglichkeiten und neue Probleme

Verfasst am: Samstag, 31. Dez. 2011 um 00:13

Mit der letzten Programmveröffentlichung hatte ich es bereits angemerkt, das ich wohl zu einer neueren Version meiner Entwicklungsumgebung umsteigen werde. Vor Weihnachten habe ich mir dann ein großes Geschenk gemacht und das neue Embarcadero Rad Studio XE2 bestellt. Vorgestern wurde es dann geliefert und ich habe es natürlich sogleich installiert. Nach einer problemlosen Installation war meine Neugier groß, wie die Konvertierung des BVASystem Projektes zur neuen Entwicklungsumgebung verlaufen wird.

Mittlerweile kann ich einen groben Überblick geben, was mich/euch erwartet. Die gute Nachricht: Das Programm lässt sich wieder übersetzen und es ist auf dem ersten Blick auch voll lauffähig. Die Schlechte Nachricht: Es gibt auch einige Baustellen (meist optischer Natur), die wohl relativ schnell abgearbeitet werden müssen.

Was wird sich in naher Zukunft ändern?

Im alten Delphi 2005 waren alle Steuerelemente nicht Unicode fähig. Spezielle Sonderzeichen, die nicht darstellbar waren, wurden einfach durch ein Fragezeichen ersetzt. Im Alltag ist dies sicher nicht weiter dramatisch gewesen, da man sich meist mit Alternativen behelfen konnte. Ich war dieses Jahr beispielsweise in Årgab im Urlaub und dieser Name konnte bisher nicht im BVASystem verwendet werden. Stattdessen hab ich einfach Argab beim Verwalten meiner Bilder genutzt, um dem Problem aus dem Weg zu gehen. Das Rad Studio XE2 arbeit nun komplett mit Unicode Zeichenketten.

In diesem Zusammenhang  zerbrech ich mir gerade ein wenig den Kopf, ob alle anderen Zeichenketten im Programm nun noch korrekt sind. Ich weiß gerade nichteinmal, ob die MYSQL-Datenbank so erzeugt wurde, das sie Unicode unterstützt. Ich werde die nächsten Tage wohl testen müssen, ob ein Fotoalbum “Årgab” nun möglich ist oder ob Korrekturbedarf besteht. Gestern abend stolperte ich jedenfalls gleich in eine Unicode-Falle. Bisher habe ich recht gerne Zeichenketten bzw Stringstreams genutzt um binäre Daten zu verändern. Nun geht das nicht mehr so einfach, da ein falsch eingestelltes Encoding die Binärdaten zerstört.

Eine wunderschöne Neuerung sind die VCL-Styles. Sie ermöglichen es, das das Aussehen der Programmoberfläche komplett selbst gestaltet werden kann. Bisher habe ich mich damit herrumgequält, das die Anwendung meinen optischen Wünschen genügt. Bisher konnte ich kein XPManifest benutzen, da meine dezent braune Oberfläche durch blaue Scrollbars zerstört wurde. Daher sahen die Scrollbars im BVASystem bisher noch so aus, wie sie zur guten alten Windows95 Zeit ausgesehen haben. Im Rad Studio XE2 ist nun standardmäßig ein moderner Look aktiv. Er kann aber mit einem selbsterstellten VCL-Style überschrieben werden. Da ich immernoch keine blauen Scrollbars möchte, werde ich dies wohl auch tun müssen. Erste Versuche brachten folgendes:

Oberflächenentwurf mit eigenem VCL-Stil

Oberflächenentwurf mit eigenem VCL-Stil

Neu ist auch der 64bit Compiler. Kleinere Testanwendungen habe ich bereits als 32bit und als 64bit Variante übersetzen können. Ob ich das BVASystem ebendso einfach auf 64bit bringen kann, weiß ich noch nicht. Die Datenbankverbindung, die zur Zeit über die “libmySQL50.dll” realisiert wird, muss ja ebendso durch eine 64bit Variante ersetzt werden. Ich würde es jedenfalls schön finden, wenn ich irgendwann einmal eine 64bit Version vom BVASystem anbieten kann. Aktuell ist dies allerdings noch nicht so wichtig.

Fazit

Im großen und ganzen bin ich mit dem Umstieg zufrieden. Die Entwicklungsumgebung wirkt vertraut, die Eingewöhnung wird also nicht all zuviel Zeit benötigen. Das BVASystem ist übersetzbar und läuft bis auf ein paar optische Unschönheiten auch. Insgesamt verspreche ich mir durch das modernere Erscheinungsbild der Software deutliche Vorteile. Allerdings muss ich dafür erst einmal die Konvertierung des Projektes abschließen.

Erweiterung des Exif-Moduls

Verfasst am: Donnerstag, 22. Dez. 2011 um 22:46

Ich hatte ja kaum damit gerechnet, aber ich habe es doch tatsächlich geschaft, in diesem Jahr noch eine Entwicklerversion fertigzustellen. Die Fertigstellung der stabilen Softwareversion war genau der Motivationsschub, den ich gebraucht habe. Es macht doch deutlich mehr Spaß, etwas neues zu entwickeln als immer nur Fehler zu suchen und zu korrigieren. Dies nun wird aber die definitiv letzte Version des Jahres sein, denn viel Zeit ist ja nicht mehr und die Feiertage möchte ich ehrlich gesagt nicht am Rechner verbringen.

Was wurde neu implementiert?

Wie bereits angekündigt, war das Ziel für diese Version, das die ungenutzen EXIF-Datenbankfelder genutzt werden. Dazu wurde als erstes natürlich das EXIF-Modul angepasst, welches die entsprechenden Daten aus dem Header ausliest. Außerdem wurden die internen Datenkomponenten so angepasst, das neuen Informationen nach dem Auslesen im Speicher gehalten werden können. Dort stehen die Informationen für zukünfige Erweiterungen am Programm jederzeit zur Verfügung. Die dritte Änderung erfolgte beim Bildimport, denn hier werden die neuen Datenbankfelder gefüllt.

Um nicht nur unsichtbare Änderungen zu programmieren, habe ich noch die Metadatenzuordnungen erweitert. Es kann nun den zusätzlichen Metadatentyp “Verwendete Kamera” für die automatischen Zuordnungen genutzt werden.

Metadaten mit neuem Metadatentyp "Verwendete Kamera"

Metadaten mit neuem Metadatentyp "Verwendete Kamera"

Was kommt als nächstes?

Eigentlich habe ich vor, als nächstes größere Änderungen an der Oberfläche vorzunehmen. Die neu hinzugekommenen EXIF-Datenfelder müssen in der Oberfläche angezeigt werden. Dazu möchte ich der Miniaturbilder und Filmstreifenansicht, bei dem “Bild markieren” Knopf einen weiteren Knopf hinzufügen. Durch diesen soll sich ein PopUp-Dialog öffnen, auf dem die EXIF-Daten angezeigt werden. Außerdem soll neben den 3 bekannten Ansichten eine vierte Ansicht hinzukommen,  auf der alle gespeicherten Daten zu einem Bild angezeigt werden. Hier soll im Gegensatz zu dem PopUp-Dialog eine Navigation innerhalb der aktiven Bildliste möglich sein.

Diese Änderungen werden aber wohl etwas nach hinten verschoben, da ich aller Wahrscheinlichkeit nach meine Entwicklungsumgebung auf den neusten technischen Stand bringen will. Mein Delphi 2005 ist mittlerweile bald 8 Jahre alt und es ist wohl von Vorteil, wenn man es durch etwas zukunftssicheres ersetzt. Ich habe in der letzten Woche bereits kurz erfolgreich getestet, ob eine Umstellung auf das neue Delphi XE2 prinzipell machbar ist. In den nächsten Wochen werde ich berichten, zu welchen Veränderungen der Wechsel beim BVASystem führt. Ich hoffe, das ich bei der Umstellung nicht auf allzuviele Probleme treffe und ich mich dann schnell wieder auf die eigentliche Weiterentwicklung konzentrieren kann.

Mission accomplished

Verfasst am: Sonntag, 11. Dez. 2011 um 18:48

Mein Versprechen, das es noch dieses Jahr eine stabile Softwareversion geben wird, konnte ich nur knapp einhalten. Aber heute habe ich es endlich geschafft. Die letzten Tage glaubte ich schon nicht mehr so recht daran, da mich das viele schreiben von Texten doch demotiviert hat. Aber eigentlich kenne ich auch keinen Softwareentwickler der gerne Dokumentationen schreibt.

BVASystem 2.1.0 - Miniaturbilder

BVASystem 2.1.0 - Miniaturbilder

Auch wenn ihr die aktuelle Version hier wie immer herunterladen könnt, so ist die neu gestaltete Homepage auf http://www.bvasystem.de der Hauptanlaufpunkt für die stabile Softwareversion. Dort sind hoffentlich alle notwendigen Informationen vorhanden, um die Installations- und Anwendungsschwierigkeiten zu meistern. Sollten trotzdem Fragen entstehen, beantworte ich diese gerne. Fehlermeldungen oder Featurewünsche könnt ihr wie gehabt selbst im Bugtracker eintragen.

Wie geht es nun weiter?

Noch heute werde ich damit beginnen, die neuen Datenbankfelder mit einem Nutzen zu versehen. Als erstes werde ich mich an die EXIF-Datenfelder machen. In der aktuellen Datenbankstruktur wird nur eines der EXIF-Datenfelder genutzt. Ziel ist es, das die restlichen Felder ebenfalls beim Datenimport belegt werden und das die gespeicherten Daten im Programm angezeigt werden können. Als weiteren Schritt wäre es dann sinnvoll, wenn die Datenfelder ebenfalls in den Metadaten genutzt werden können.

Die nächste größere Baustelle wird dann die Verschlagwortung von Bildern. Hier bin ich mir über das genaue Konzept noch nicht ganz sicher. Fest steht aber, das es für die Verschlagwortung ebenfalls Metadatendefinitionen geben wird.

Sicher ist auf jedenfall, das in maximal 3 Wochen hier die nächste Entwicklerversion veröffentlich wird, denn nach einer stabilen Softwareversion ist vor einer stabilen Softwareversion.