Popupfenster | BVA-System

Posts Tagged ‘Popupfenster’

Fehlerkorrektur im Popup-Fenster Grundgerüst

Donnerstag, August 22nd, 2013

Vor einiger Zeit veröffentlichte ich einen Artikel, in dem ich beschrieb, wie man in Delphi ein Popupfenster implementiert. Gestern musste ich, als ich ein Popupfenster nicht auf dem Hauptdialog der Anwendung einbinden wollte feststellen, das sich in meinem Grundgerüst ein Fehler eingeschlichen hat. 

In dem WMACTIVATE Event wird eine Windowsbotschaft versendet, so das das bisher aktive Fenster auch weiterhin als aktives Fenster dargestellt wird. Der Fehler daran war, das ich die Botschaft immer an das Hauptfenster (Application.MainForm.Handle) der Anwendung versendet habe. Korrekter Weise müsste es an das Formular gesendet werden, von dem aus das Popup geöffnet wurde. Das korrigierte WMACTIVATE Event sieht wie folgt aus:

 delphi | 
 
 Quellcode kopieren |
?

01
procedure TfrmBVAImageInfo.WmActivate(var Msg: TWMActivate);
02
var Parent:TCustomForm;
03
begin
04
 if FOwner <> nil then begin
05
  Parent := GetParentForm(TControl(FOwner));
06
  if (Parent <> nil) and (not(csDestroying in Parent.ComponentState)) then begin
07
   SendMessage(Parent.Handle, WM_NCACTIVATE, Ord(Msg.Active <> WA_INACTIVE), 0);
08
  end;
09
 end;
10
11
 inherited;
12
end;

Außerdem musste ich noch folgenden Code in dem Construktor des Popup-Fensters einfügen, damit das Popup-Fenster auch immer vor allen anderen Dialogen angezeigt wird.

 delphi | 
 
 Quellcode kopieren |
?

1
constructor TfrmBVAImageInfo.Create(aOwner: TComponent);
2
begin
3
 inherited;
4
 FOwner                   := aOwner;
5
6
 SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_APPWINDOW or WS_EX_TOPMOST);
7
 SetWindowLong(Handle, GWL_HWNDPARENT, GetDesktopWindow);
8
end;

Das Bildinformations-Popupfenster

Sonntag, Februar 12th, 2012

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.