2010-12-18 11 views
-1

Vielleicht ein Piepton und Hintergrund blinkt rot? Irgendein Codeausschnitt? DankWie wird ein Formular bei der Fehlereingabe blinkend angezeigt?

+0

yikes, drei der nervigsten ui dis-features (Piepen, Blinken und Blinken) um einen Fehler zu signalisieren ?! Warum nicht einfach einen dicken Rahmen um Kontrollen legen, die arrogene Eingaben haben? Dick, denn nur die Farbe zu ändern würde den Farbenblinden nicht helfen. –

+1

Ich denke, Sie sollten stattdessen 1000 Popup-Fenster auf zufällige Webseiten öffnen. Das wäre noch mehr ANNOYING. :-) –

Antwort

5

macht eine Form Blink ein sehr schlechtes GUI-Design ist, anstatt Sie eine dieser Optionen ausprobieren können:

  • eine Dialog-Nachricht mit, wie

_

Application.MessageBox('Your message of error', 'Errror', MB_ABORTRETRYIGNORE + MB_ICONSTOP); 
  • mit einem Bild (Symbol), die einen Fehlerstatus darstellen.
  • mit einem TStatusBar mit einer Nachricht, die die Fehlermeldung anzeigt.
  • mit einem TLabel in Ihrem Formular mit einer speziellen Schriftfarbe (wie clred).

Schließlich hängt die Wahl, die Sie wählen, von der Art Ihrer Anwendung und der Art des Fehlers ab.

Check diese Frage für weitere Ratschläge Error Message Text - Best Practices

+4

Während eine Dialognachricht viel besser ist als Piepen, Blinken und Blinken, rate ich zur Zurückhaltung bei der Verwendung von Nachrichtenboxen. Für echte Fehler sind sie OK, aber alle diese "Sind Sie sicher" Art von Nachrichten sind nur etwas weniger störend als blinken, blinken oder Piepen ... –

1

Meine persönliche Präferenz ist folgendes zu tun:

Highlight (und Fokus) die Steuerung im Fehler, entweder durch sublty ändert es Hintergrundfarbe ist oder machen die Grenze fett oder sogar die Feldbeschriftung fett zu machen. Oder irgendeine Kombination. Wie Marjan Venema sagte, seien Sie sich der Menschen bewusst, die farbenblind sind.

Zuletzt haben Sie einen Bereich jedes Formulars, der Validierungsfehler anzeigen kann - z. Richten Sie eine Listbox oder ein Stringgrid o.ä. nach unten oder oben aus und schalten Sie die Sichtbarkeit entsprechend der Anzahl der Fehler> 0 um. Sie könnten dem Benutzer sogar erlauben, auf den Fehler in der Tabelle/Liste zu klicken, um den Fokus auf das betreffende Feld zu setzen.

Eine meiner Apps speichert diese Validierungsfehler tatsächlich in einer Tabelle und ermöglicht es dem Benutzer, die Liste abzufragen, um später durch Fehler zu arbeiten.

Pop-up-Dialoge und blinken sollte sehr sparsam verwendet werden.

Hoffe, das hilft.

1

Erstellen Sie einfach ein zweites, leeres Formular zur Laufzeit mit der gleichen Größe und Position und zeigen Sie es für kurze Zeit als Overlay an. Sie können alphablending (AlphaBlend und AlphaBlendValue Eigenschaften, siehe this article) verwenden, damit das folgende Formular weiterhin angezeigt wird.

(Dies ist eine Technik, die ich als ein zusätzlichen visuellen Hinweis verwendet, während ein modalen Dialog angezeigt wird - ohne blinken, natürlich)

0

Eine mögliche Lösung:

Bitte beachten Sie:

Sie sind in der Windows.pas Einheit definiert, soweit Delphis betroffen ist.

Setzen Sie das richtige Handle auf das HWND-Feld Ihrer FLASHWINFOHWND-Struktur. Jede VCL-Steuerung mit einem Griff macht et voilà!

Durch das Anpassen der Felder dwFlags und uCount können Sie das erwartete Verhalten erzielen.

In Ihrem Fall ist das Blinken/Blinken des ganzen Formulars meiner Meinung nach keine gute Idee. Vermeiden Sie es, zu aufdringlich und/oder ärgerlich zu sein: Warum sollten Sie nicht auf das Steuerelement zielen, bei dem die falsche Eingabe erfolgt ist oder zumindest die Statusleiste?


Randbemerkung:

Hier ist ein Ausschnitt ich irgendwann durch zu Alarm Benutzer verwenden von blinkt:

procedure TForm1.Flash; 
var 
    FlashInfo: FLASHWINFO; 
begin 
    if (GetForegroundWindow<>Handle) then 
    begin 
    FillChar(FlashInfo, SizeOf(FLASHWINFO), 0); 
    // 
    FlashInfo.cbSize := SizeOf(FLASHWINFO); 
    FlashInfo.dwFlags := FLASHW_ALL or FLASHW_TIMERNOFG; 
    FlashInfo.hwnd := Handle; 
    // 
    FlashWindowEx(FlashInfo); 
    end; 
end; 

Hinweis:

  • Es funktioniert wenn und nur wenn das Hauptfenster der App nicht ist im Vordergrund (blinkt nur bei Bedarf!).
  • Ich rufe die Methode vor einer modalen Fehlermeldung und nur in diesem Fall.
0

Der „richtige“ Weg, dies, in Windows zu tun, ist die FlashWindow API zu verwenden, die Sie aus dem Fenster Grenze blinken läßt, und wenn es nicht zur Zeit fokussiert wird, die Taskleiste Symbol zu blinken.

Verwandte Themen