Navigation - Aktives Feld

21. Februar 2007 20:53

Hallo!

Da ich leider nicht wirklich weiß nach was ich suchen soll, und bis dato noch keine Lösung habe, muss ich mich wiedermal an euch wenden.

In unserer Produktion Arbeiten unsere User nur rein mit der Tastatur. Es stehen keine Touchsreens oder Mäuse zur Verfügung.

Die Navigation mit Nextcontrol usw. ist zwar so weit perfekt. Wenn aber unsere User - vor allem die älteren Mitarbeiter - in einer großen Tabelle mit den Cursor herumfahren, verlieren Sie das aktive Feld oft aus den Augen. bzw. wenn Sie den Arbeitsplatz verlassen, müssen Sie immer eine Zeit lang suchen bis Sie das aktive Feld gefunden haben.

Kurz gesagt bin ich auf der Suche, nach einer Möglichkeit den gepunkteten Rahmen des aktiven Feldes (wie auch immer der in der Fachsprache heist) zu vergrößern oder umzufärben oder die aktive Zelle einzufärben, damit unsere Mitarbeiter das aktive Feld schneller finden.

Vielleicht hatte jemand von euch schon einmal so eine Anforderung und kann mir einen Tip geben.

Danke vielmals.

21. Februar 2007 21:49

Bevor wir jetzt komplizierte Lösungen ausarbeiten, biete ich hier mal eine einfache Lösung, welche ganz ohne Programmierung auskommt:

Die aktuelle Zeile kann man links anhand des kleinen Dreiecks erkennen.
In welchem Feld man aktuell steht, kann aus der Statusleiste unten links entnommen werden.

Somit kann man mit zwei kurzen Blicken erkennen, wo man sich gerade befindet.

21. Februar 2007 22:47

Hallo Martin,

wenn es sich nicht um eine Tablebox handelt, in der der Rahmen erscheinen soll,
dann kann man sich um jedes Feld einen Rahmen-Control basteln (z.B. in roter Farbe) und
diesen beim Aktivieren des eigentlichen Controls auf Visible=JA setzen und beim Deaktivieren wieder auf Visible=Nein.

21. Februar 2007 23:33

Geniale Idee, aber dafür brauchst du nicht für jedes Control einen eigenen Rahmen anlegen.
Ein einziges Control reicht aus, welches jeweils an die jeweilige Stelle des aktivierten Controls verschoben würde.
Als "Inspirations-Vorlage" können hier die Wizard-Forms dienen, wo auch zu Beginn die Frames verschoben werden.
Eine weitere "Inspirations-Vorlage" kann auch das Hauptmenü der Version 3.70 dienen, wo die Buttons der einzelnen Module neu angeordnet werden.

Falls es sich doch um eine TableBox handelt, so kann der folgende Beitrag sicherlich ein hilfreicher Ansatzpunkt sein:
Hervorhebung des aktuellen Datensatzes in einer Übersicht

22. Februar 2007 09:54

Das mit dem Rahmen könnte z.B. so aussehen:

Beispiel: Customer Card (F21)

Neues Control: Shape (Rectangle), Name: ActiveCtrl, XPos=0, YPos=0, Width=0, Height=0, BackTransparent=Yes, Border=Yes, BorderColor=255, BorderWidth=3pt

Code für jedes Feld, das markiert werden soll:

Code:
No. - OnActivate()
CurrForm.ActiveCtrl.XPOS := CurrForm."No.".XPOS - 110;
CurrForm.ActiveCtrl.YPOS := CurrForm."No.".YPOS - 110;
CurrForm.ActiveCtrl.WIDTH := CurrForm."No.".WIDTH + 220;
CurrForm.ActiveCtrl.HEIGHT := CurrForm."No.".HEIGHT + 220;


Code:
Name - OnActivate()
CurrForm.ActiveCtrl.XPOS := CurrForm.Name.XPOS - 110;
CurrForm.ActiveCtrl.YPOS := CurrForm.Name.YPOS - 110;
CurrForm.ActiveCtrl.WIDTH := CurrForm.Name.WIDTH + 220;
CurrForm.ActiveCtrl.HEIGHT := CurrForm.Name.HEIGHT + 220;


usw.

Je mehr Felder, desto aufwendiger ...

22. Februar 2007 10:28

Da der Programmcode immer gleich ist, könnte man das wunderbar in eine Funktion auslagern. Dann ist der Aufruf nur noch ein Einzeiler:

Code:
MoveRectangle(XPos : Integer, YPos : Integer, Width : Integer, Height : Integer)
CurrForm.ActiveCtrl.XPOS := XPos - 110;
CurrForm.ActiveCtrl.YPOS := YPos - 110;
CurrForm.ActiveCtrl.WIDTH := Width + 220;
CurrForm.ActiveCtrl.HEIGHT := Height + 220;

No. - OnActivate()
MoveRectangle(CurrForm."No.".XPOS,CurrForm."No.".YPOS,CurrForm."No.".WIDTH,CurrForm."No.".HEIGHT);

Name - OnActivate()
MoveRectangle(CurrForm.Name.XPOS,CurrForm.Name.YPOS,CurrForm.Name.WIDTH,CurrForm.Name.HEIGHT);