XbpBrowse mehrzeilig

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Antworten
saul
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 284
Registriert: So, 26. Mär 2006 12:23

XbpBrowse mehrzeilig

Beitrag von saul »

Hallo,
in einer bisherigen Anwendung habe ich mir auf dem Bildschirm eine Anzeige gebaut, die mit Cursortasten bzw. PGPU scrollen konnte. Die zwei angezeigten Memofelder sind mit verschieden langen Texten bestückt.
Nun möchte ich das eventuell in der modernen Fenstertechnik versuchen. Mache ich das mit XbpBrowse, so wird mir zwar das Memofeld angezeigt, aber jedes Memofeld nur in einer Zeile mit der eingestellten Länge und der eventuelle Rest mit .....
Sind mehrzeilige Anzeigen mit xbpParts überhaupt überhaupt möglich?
Wenn ja in welcher Richtung müßte ich suchen?
Danke

mfg
Wolfgang
Dateianhänge
browse.jpg
browse.jpg (160.14 KiB) 5999 mal betrachtet
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: XbpBrowse mehrzeilig

Beitrag von Jan »

Hallo Wolfgang,

Tom hat sowas auf der Mitgliederversammlung des Vereins im vergangenen Jahr in seinem Vortrag über OwnerDrawing gezeigt. Nicht Memofelder, aber mehrzeilig. Es lohnt sich also, dabei zu sein :wink:

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16508
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: XbpBrowse mehrzeilig

Beitrag von Martin Altmann »

Du könntest zur Anzeige der Memofeldinhalte ein XbpMLE() nehmen - da sollte auch mehr angezeigt werden.

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2824
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: XbpBrowse mehrzeilig

Beitrag von georg »

Hallo, Saul -


es gibt sicher verschiedene Wege zum Ziel.

Aber zuerst eine Frage: was genau verstehst Du unter "mehrzeilig"?

Mehrzeilig kann heissen, dass jede Datenzeile (die einem Datensatz entspricht) z.B. die Höhe von drei "normalen" Zeilen haben soll.

Mehrzeilig kann auch heissen, dass jede Datenzeile eine individuelle Höhe haben soll, entsprechen dem Text, der sich im Memo-Feld befindet.

Was ist Deine Vorstellung?
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
saul
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 284
Registriert: So, 26. Mär 2006 12:23

Re: XbpBrowse mehrzeilig

Beitrag von saul »

Hallo,
ein Memofeld, ich hab eines für die Befundung und eines für die Behebung, beinhaltet bei mir Texte. Diese sind verschieden lang. Da die Spaltenbreite begrenzt ist, ergeben sich daraus für die anzuzeigenden Memofelder eventuell jeweils mehrer Zeilen.

Das heißt jede Datenzeile ist so hoch wie die max Zeilenzahl der beiden Memofelder.

Ich hoffe, das ist jetzt ein wenig klarer.

mfg
Wolfgang
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: XbpBrowse mehrzeilig

Beitrag von brandelh »

saul hat geschrieben:Das heißt jede Datenzeile ist so hoch wie die max Zeilenzahl der beiden Memofelder.
so wie ich das sehe ist das genau ein Datensatz den du anzeigst.
Hierbei nimmt man dann für einzeilige Daten XbpSLE() und für mehrzeilige XbpMle().
Gerade bei dieser Anzeige halte ich es nicht für sinnvoll, die Höhe des XbpMle() jeweils anzupassen,
damit alle Zeilen (automatisch umgebrochen oder per chr(13) ist egal) angezeigt werden.
Deine Anwender werden es schätzen, wenn die Controls in den Zeilen darunter immer am gleichen Ort sind.
Mit den MLE würde ich 3 bis 4 Zeilen an Höhe anzeigen und falls der Text länger wird, erscheinen scrollbalken im
MLE sodass der Anwender selbst entscheiden kann ob er den Rest lesen will.
Gruß
Hubert
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9358
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: XbpBrowse mehrzeilig

Beitrag von Tom »

Hallo, Wolfgang.

Mehrzeilige Browses sind mit Ownerdrawing vergleichsweise leicht zu bauen, und ich glaube, ich hatte das Beispiel hierfür inzwischen auch irgendwo gepostet. Was mit Browses nicht geht, das sind dynamische Zeilenhöhen, also wechselnde Zeilengrößen (abhängig von der Textmenge). Das geht allerdings ziemlich fein mit der XbpListbox, die dynamische Zeilenhöhen zulässt. Hierfür hatte Jimmy ein Beispiel konstruiert, das hier auch irgendwo herumliegt. Und wenn man sich ganz intensiv mit all diesem Zeug auseinandergesetzt hat, kann man prinzipiell auch ein eigenes Control bauen. Aber das ist hohe Schule.
Herzlich,
Tom
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: XbpBrowse mehrzeilig

Beitrag von AUGE_OHR »

saul hat geschrieben:Sind mehrzeilige Anzeigen mit xbpParts überhaupt überhaupt möglich?
wie schon angedeutet muss man Ownerdraw verwenden um Zugriff auf

Code: Alles auswählen

:measureItem := {| nItem, aDims, self | ... }
zu bekommen um die "Höhe" zu "manipulieren".
saul hat geschrieben:Wenn ja in welcher Richtung müßte ich suchen?
:stableBlock
ich würde einen "Split-Dialog" verwenden und die Anzeige des Memo, was auch Bilder sein könnten, mit dem :stableBlock realisieren.
gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: XbpBrowse mehrzeilig

Beitrag von brandelh »

AUGE_OHR hat geschrieben:
saul hat geschrieben:Sind mehrzeilige Anzeigen mit xbpParts überhaupt überhaupt möglich?
wie schon angedeutet muss man Ownerdraw verwenden
wie schon geschrieben, Text kann XbpMLE() und XbpStatic() ohne Schwierigkeiten mehrzeilig darstellen.
Das Bild von oben ist doch kein Browser !
Gruß
Hubert
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2824
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: XbpBrowse mehrzeilig

Beitrag von georg »

Hallo, Wolfgang -


jetzt kommt mein Lieblingsbegriff mal wieder zum Tragen: Paradigmenwechsel.

Beim Übergang von DOS auf Windows sollte man immer überlegen, ob es nicht eine bessere Methode gibt.

Theoretisch (so sagt mir zumindest mein Gedächtnis) kann man die Mehrzeiligkeit über die dbSkipper() Methode des Browse-Objektes regeln. Diese muss dazu in die Memofelder reinschauen und die voraussichtliche Anzahl Zeilen ermitteln, und entsprechend das "Skippen" anpassen. Da gab es vor langer Zeit (Clipper-Ära) mal Beispiele, die sind mir aber derzeit nicht griffbereit.

Dann kommt aber der Moment, wo der Anwender die Spaltenbreite ändert, oder die Fenstergrösse, oder, oder, oder, und schon sieht es wieder aus wie Hund.

Lass mich eine andere Frage stellen: stellt der Browse DIE Informationsquelle dar, oder wählt der Benutzer einen Satz zur Bearbeitung aus? Ich würde in Deiner Situation die Zeilen doppelt so hoch wie "normal" machen und nur soviel Text anzeigen, wie eben angezeigt werden kann. Punkt.

Ja, ich verstehe Deinen Einwand, und darauf wollte ich gerade kommen. Wenn Du in den Xbase-Beispielen unter \XppW32\Source\Samples\Solution\Tooltip nachsiehst, wirst Du ein Beispiel finden, dass ich in dem Browse implementieren würde. In dem Moment, wo die Maus über die entsprechende Zelle geht, würde ich in der Art eines Tooltip den gesamten Text einblenden.

Das hat den Vorteil, dass der Browse "einheitlich" aussieht (lange Text könnten schon mal über zwei Seiten gehen ...), und doch die ganze Information verfügbar ist, wenn man gezielt auf einen Fall zugreift, indem man die Maus auf die Zelle bewegt.
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: XbpBrowse mehrzeilig

Beitrag von AUGE_OHR »

brandelh hat geschrieben:wie schon geschrieben, Text kann XbpMLE() und XbpStatic() ohne Schwierigkeiten mehrzeilig darstellen.
Das Bild von oben ist doch kein Browser !
klar ... es geht aber ja um die Umstellung auf einen Browser + Anzeige Memo.

was Saul ( Wolfgang ) vielleicht noch nicht weiss ist das sich der XbpBrowse():stableBlock dafür eignet um "mehr" Feld Informationen anzuzeigen.
mit einem "Split-Dialog" kann kann nun das Browse vom Rest "trennen" z.b. oben Liste und unten Memo.

wie Georg schon sagte wenn man eine DOS Applicationen nach "full GUI" bringen will sollte man das prozedurale Cl*pper "Denken" nicht mehr verwenden sondern dir die "anderen" Möglichkeiten ansehen.
gruss by OHR
Jimmy
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: XbpBrowse mehrzeilig

Beitrag von UliTs »

georg hat geschrieben:...
Wenn Du in den Xbase-Beispielen unter \XppW32\Source\Samples\Solution\Tooltip nachsiehst, wirst Du ein Beispiel finden, dass ich in dem Browse implementieren würde. In dem Moment, wo die Maus über die entsprechende Zelle geht, würde ich in der Art eines Tooltip den gesamten Text einblenden.
...
Gute Idee!
Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: XbpBrowse mehrzeilig

Beitrag von AUGE_OHR »

UliTs hat geschrieben:
georg hat geschrieben:... \XppW32\Source\Samples\Solution\Tooltip...
Gute Idee!
solange man kein XppFATAL.LOG mit

Code: Alles auswählen

Error Codes: EH: 4 Sub: 6(6) OS: 6 XPP: 40
bekommt ...
das "MagicHelp" Demo basiert auf DBF ... wenn man es auf Array umstrickt funktioniert es ganz gut.
gruss by OHR
Jimmy
saul
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 284
Registriert: So, 26. Mär 2006 12:23

Re: XbpBrowse mehrzeilig

Beitrag von saul »

Hallo,
bisher habe ich die notwendigen Daten (lfd Nr. ,Memofelder, Minuten und was sonst noch alles auf dem Bildschirm erscheinen soll) so wie es auf dem Bildschirm erscheint, Zeile für Zeile in ein Array geschrieben (die Berechnung dazu war schon einiges an Aufwand) und mir das dann mit achoice anziegen lassen. Über die unten angezeigten Tastenbefehle bin ich dann zur Eingabe Routine gesprungen. Dieses Array könnte ich ja jetzt einfach mit xbpbrowse anzeigen lassen aber ich hatte gedacht es gäbe eine einfachere Lösung mit xbpbrowse. Aber das Problem scheint zu sien, das die Memofelder zu unterschiedlich sein können.
Ich glaube das dies in meiner Situation auch die einfachste Lösung ist, zumal das alles noch in einem CRT Fenster läuft und ich die Maus bei all meinen Programm eigentlich nicht benötige. Die stört nur bei den Dateneingaben.

mfg
Wolfgang
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: XbpBrowse mehrzeilig

Beitrag von brandelh »

AUGE_OHR hat geschrieben:
brandelh hat geschrieben:wie schon geschrieben, Text kann XbpMLE() und XbpStatic() ohne Schwierigkeiten mehrzeilig darstellen.
Das Bild von oben ist doch kein Browser !
klar ... es geht aber ja um die Umstellung auf einen Browser + Anzeige Memo.

was Saul ( Wolfgang ) vielleicht noch nicht weiss ist das sich der XbpBrowse():stableBlock dafür eignet um "mehr" Feld Informationen anzuzeigen.
mit einem "Split-Dialog" kann kann nun das Browse vom Rest "trennen" z.b. oben Liste und unten Memo.

wie Georg schon sagte wenn man eine DOS Applicationen nach "full GUI" bringen will sollte man das prozedurale Cl*pper "Denken" nicht mehr verwenden sondern dir die "anderen" Möglichkeiten ansehen.
Bei der Überschrift schon, aber das was oben im Bild als Anzeige steht ist für Browser ungeeignet !
Man sollte sich erst über die richtige Darstellung Gedanken machen und danach wie man sie umsetzt.

Es kann natürlich sein, dass ich das falsch verstanden habe 8)
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: XbpBrowse mehrzeilig

Beitrag von AUGE_OHR »

saul hat geschrieben:Dieses Array könnte ich ja jetzt einfach mit xbpbrowse anzeigen lassen aber ich hatte gedacht es gäbe eine einfachere Lösung mit xbpbrowse. Aber das Problem scheint zu sien, das die Memofelder zu unterschiedlich sein können.
also wenn du es unbedingt "im" Browse haben willst siehe dir mal C:\ALASKA\XPPW32\Source\samples\solution\xbpget\COLTEST.EXE an.

vermutlich hast du bislang nur oBrowse:AddColumn() -> XbpColumn() genutzt.
das o.g. Demo verwendete "verschiedene" Column Class Objecte darunter auch XbpMleColumn()

du kannst auch die "ganze" Höhe / Breite einer Column zur Anzeige eine MLE nutzen wie das Demo XbpColumnMemo() von Diego Kerejeta
zeigt.
Memo_Col.PNG
Memo_Col.PNG (26.79 KiB) 5878 mal betrachtet
Dateianhänge
MemoDLL.zip
Demo mit DLL/LIB
v1.9.355
(16.01 KiB) 201-mal heruntergeladen
gruss by OHR
Jimmy
saul
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 284
Registriert: So, 26. Mär 2006 12:23

Re: XbpBrowse mehrzeilig

Beitrag von saul »

Hallo,
danke, das werde ich mir nächstes Wochenende mal anschauen.

mfg
Wolfgang
Antworten