XbpBrowse mehrzeilig
Moderator: Moderatoren
XbpBrowse mehrzeilig
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
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 (160.14 KiB) 5999 mal betrachtet
- Jan
- 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
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
Jan
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
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Martin Altmann
- 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
Du könntest zur Anzeige der Memofeldinhalte ein XbpMLE() nehmen - da sollte auch mehr angezeigt werden.
Viele Grüße,
Martin
Viele Grüße,
Martin
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.
-
- 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
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?
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.
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Re: XbpBrowse mehrzeilig
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
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
- brandelh
- 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
so wie ich das sehe ist das genau ein Datensatz den du anzeigst.saul hat geschrieben:Das heißt jede Datenzeile ist so hoch wie die max Zeilenzahl der beiden Memofelder.
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
Hubert
- Tom
- 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
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.
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
Tom
- AUGE_OHR
- 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
wie schon angedeutet muss man Ownerdraw verwenden um Zugriff aufsaul hat geschrieben:Sind mehrzeilige Anzeigen mit xbpParts überhaupt überhaupt möglich?
Code: Alles auswählen
:measureItem := {| nItem, aDims, self | ... }
:stableBlocksaul hat geschrieben:Wenn ja in welcher Richtung müßte ich suchen?
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
Jimmy
- brandelh
- 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
wie schon geschrieben, Text kann XbpMLE() und XbpStatic() ohne Schwierigkeiten mehrzeilig darstellen.AUGE_OHR hat geschrieben:wie schon angedeutet muss man Ownerdraw verwendensaul hat geschrieben:Sind mehrzeilige Anzeigen mit xbpParts überhaupt überhaupt möglich?
Das Bild von oben ist doch kein Browser !
Gruß
Hubert
Hubert
-
- 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
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.
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.
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
- AUGE_OHR
- 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
klar ... es geht aber ja um die Umstellung auf einen Browser + Anzeige Memo.brandelh hat geschrieben:wie schon geschrieben, Text kann XbpMLE() und XbpStatic() ohne Schwierigkeiten mehrzeilig darstellen.
Das Bild von oben ist doch kein Browser !
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
Jimmy
-
- 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
Gute Idee!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.
...
Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Mitglied XuG Cologne
Mitglied XuG Osnabrück
- AUGE_OHR
- 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
solange man kein XppFATAL.LOG mitUliTs hat geschrieben:Gute Idee!georg hat geschrieben:... \XppW32\Source\Samples\Solution\Tooltip...
Code: Alles auswählen
Error Codes: EH: 4 Sub: 6(6) OS: 6 XPP: 40
das "MagicHelp" Demo basiert auf DBF ... wenn man es auf Array umstrickt funktioniert es ganz gut.
gruss by OHR
Jimmy
Jimmy
Re: XbpBrowse mehrzeilig
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
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
- brandelh
- 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
Bei der Überschrift schon, aber das was oben im Bild als Anzeige steht ist für Browser ungeeignet !AUGE_OHR hat geschrieben:klar ... es geht aber ja um die Umstellung auf einen Browser + Anzeige Memo.brandelh hat geschrieben:wie schon geschrieben, Text kann XbpMLE() und XbpStatic() ohne Schwierigkeiten mehrzeilig darstellen.
Das Bild von oben ist doch kein Browser !
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.
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
Gruß
Hubert
Hubert
- AUGE_OHR
- 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
also wenn du es unbedingt "im" Browse haben willst siehe dir mal C:\ALASKA\XPPW32\Source\samples\solution\xbpget\COLTEST.EXE an.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.
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.
- Dateianhänge
-
- MemoDLL.zip
- Demo mit DLL/LIB
v1.9.355 - (16.01 KiB) 201-mal heruntergeladen
gruss by OHR
Jimmy
Jimmy
Re: XbpBrowse mehrzeilig
Hallo,
danke, das werde ich mir nächstes Wochenende mal anschauen.
mfg
Wolfgang
danke, das werde ich mir nächstes Wochenende mal anschauen.
mfg
Wolfgang