DCBROWSECOL und Width [ERLEDIGT]

Moderator: Moderatoren

Antworten
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 18818
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel

DCBROWSECOL und Width [ERLEDIGT]

Beitrag von Manfred » Fr, 25. Jan 2019 16:44

zu meiner Schande muß ich zugeben, das ich gerade zum erstenmal die Anleitung genauer gelesen habe zu DCSAY und DCGET. Eigentlich suchte ich was ganz anderes. Bin dabei aber darauf gestossen, das man bei SIZE 0,einenwert erreicht, das die Länge des GET oder SAY automatisch berechnet wird in Abhängigkeit von der Schrift und der Schriftgröße. Tja, jede Menge Arbeit für nix gemacht. Aber egal. Jetzt würde mich mal interessieren, ob das für DCBROWSCOL auch geht? Gibt es da einen Parameter, oder so, der dafür sorgt, das die Breite der Spalte automatisch berechnet wird, je nach Schrift und Größe usw.? Nur bevor ich jetzt wieder anfange zu stricken und dann wieder feststellen muß´, das Roger das alles schonerschlagen hat. Welche Funktion ist es denn, mit der er die Werte für Länge und Höhe bei SAY und GEt ermittelt? Vieleicht kann man ja damit was erreichen?
Gruß Manfred
Mitglied der XUG Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite

Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 18818
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel

Re: DCBROWSECOL und Width [ERLEDIGT]

Beitrag von Manfred » Fr, 25. Jan 2019 19:50

tja, Roger scheint wirklich an alles gedacht zu haben. Ich habe einfach mal den Parameter WIDTH weggelassen und siehe da, die Breite wird automatisch angepaßt. So wollte ich es haben. Super. :blob8:
Gruß Manfred
Mitglied der XUG Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite

Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 18818
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel

Re: DCBROWSECOL und Width [ERLEDIGT]

Beitrag von Manfred » Fr, 25. Jan 2019 20:20

OK, einen kleinen Haken hat die Sache. Wenn man anfänglich ein leeres Browse erzeugt, dann werden die Spalten recht schmal erzeugt. Wenn man dann daten nachschickt, werden die Spalten nicht angepaßt. Mit dc_getrefresh() erreicht man da nichts. Mal sehen, ob ich was dazu finde.
Gruß Manfred
Mitglied der XUG Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite

Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2201
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Kontaktdaten:

Re: DCBROWSECOL und Width [ERLEDIGT]

Beitrag von Koverhage » Sa, 26. Jan 2019 10:23

Ich mache das so (keine Ahnung ob das richtig ist)
oBrowse:refreshall(), oBrowse:forcestable(),
Gruß
Klaus

Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 18818
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel

Re: DCBROWSECOL und Width [ERLEDIGT]

Beitrag von Manfred » Sa, 26. Jan 2019 11:05

:rfereshall() ist schon drin und :forcestable() paßt nicht die Breite an, wenn vorher alles leer war.
Also werde ich mal Dummies da rein schreiben. Bis mir was besseres einfällt.
Gruß Manfred
Mitglied der XUG Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite

Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 7693
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Kontaktdaten:

Re: DCBROWSECOL und Width [ERLEDIGT]

Beitrag von Tom » Sa, 26. Jan 2019 11:37

Nein, wenn man die Konfiguration eines Browses oder seiner Elemente ändern will, erreicht man mit oBrowse:RefreshAll() oder gar oBrowse:ForceStable() überhaupt nichts. Refresh(All/Current) evaluiert die Daten-Codeblöcke der Spalten/Zellen erneut, aktualisiert das Browse also bezogen auf die Datenquelle (nicht bezogen auf das Layout!), und ForceStable() stabilisiert das Browse, sorgt also dafür, dass die Anzeige den Daten entspricht und der Cursor an der gewünschten Stelle steht usw.

Maßgeblich bei Spaltenbreiten ist übrigens auch der Header - kleiner als passend für den Header können Spalten in aller Regel nicht werden!

Um die Spaltenbreite nachträglich zu setzen, muss man mit oColum:SetSize() arbeiten. Anschließend ist oBrowse:Configure() hilfreich - das ist auch das Mittel der Wahl, wenn man die Presentation Parameter nachträglich geändert hat (Achtung! DC_PresAdd() verwenden!) und etwa die Zeilenhöhe variieren will.
Herzlich,
Tom

Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 18818
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel

Re: DCBROWSECOL und Width [ERLEDIGT]

Beitrag von Manfred » Sa, 26. Jan 2019 13:00

Hi Tom,
das Problem ist ja, wenn direkt was drin steht in den Spalten, dann wird alles so von der Breite her angepaßt, wie es sein soll. Also dynamisch. Schrift ändert sich, Größe der Schrift ändert sich. Alles kein Problem. Nur wenn die DAtenquelle nach dem Erstellen keine DAten geliefert hat, aber dann geändert wird und dann Daten vorhanden sind, dann wird die einstige Breite für die leeren Spalten genommen und die ist dann zu klein. Das habe ich jetzt erstmal so gelöst, das ich entpsrechende Zeichenmengen schreibe und den Hinweis, das keine DAten vorhanden sind. So habe ich zumindest bei einem Wechsel von leeren Spalten auf gefüllte Spalten die Breite immer richtig.
Gruß Manfred
Mitglied der XUG Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite

Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 7693
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Kontaktdaten:

Re: DCBROWSECOL und Width [ERLEDIGT]

Beitrag von Tom » Sa, 26. Jan 2019 13:28

Hallo, Manfred.

Wenn die Datenquelle noch leer ist, kannst Du, wenn Du Spalten mit DATA-Codeblöcken verwendest, ja zunächst die entsprechende Menge Leerzeichen anzeigen:

Code: Alles auswählen

DCBROWSECOL DATA {||IF((MyTable)->(EoF()),Space(30),(MyTable)->name)} .... PARENT oBrowse
oder eleganter.

Oder Du verwendest in diesem Fall dann doch die WIDTH-Klausel. :wink:
Herzlich,
Tom

Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 18818
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel

Re: DCBROWSECOL und Width [ERLEDIGT]

Beitrag von Manfred » Sa, 26. Jan 2019 14:02

So ähnlich mache ich das auch. Fülle es entsprechend auf. DAmit kann ich leben. Ich hatte nur den Verdacht, das es da evtl. noch andere Lösungen gibt und ich wieder im Trüben fische.
Gruß Manfred
Mitglied der XUG Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite

Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 7693
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Kontaktdaten:

Re: DCBROWSECOL und Width [ERLEDIGT]

Beitrag von Tom » Sa, 26. Jan 2019 16:34

Wenn die Spaltenbreite auf Basis der Füllung des Inhalts errechnet wird und es gibt anfangs keinen Inhalt - was soll Roger dann machen?

Wenn Du eine Tabelle braust, kannst Du auch simpel formatieren, und weil es Phantomdatensätze gibt, geht das immer, auch bei EoF(). Also ein PadR() bei Strings usw.
Herzlich,
Tom

Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 18818
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel

Re: DCBROWSECOL und Width [ERLEDIGT]

Beitrag von Manfred » Di, 05. Feb 2019 12:06

hat eigentlich jemand eine Ahnung/Vermutung, mit welcher Funktion Roger die Berechnung durchführt für die optimale Breite Länge Höhe usw.? Mich würde dann mal interssieren, was er da so alles benutzt und einsetzt. Gibt es da überhaupt eine DC_ Funktion für?
Gruß Manfred
Mitglied der XUG Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12004
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: DCBROWSECOL und Width [ERLEDIGT]

Beitrag von AUGE_OHR » Di, 05. Feb 2019 15:13

Manfred hat geschrieben:
Di, 05. Feb 2019 12:06
Gibt es da überhaupt eine DC_ Funktion für?
in \exp20\Source\Dclipx\_dcfunct.prg gibt es

Code: Alles auswählen

FUNCTION DC_GraQueryTextBox( cCaption, cFont, nOption, nMode )
was natürlich GraQueryTextBox() nutzt.

wenn du nun viele Anfragen hast dann siehe dir mal GetTextExtentPoint32() von Günter Beyes an.
GraTest.zip
C Source mit OBJ
(8.66 KiB) 24-mal heruntergeladen
gruss by OHR
Jimmy

Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 18818
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel

Re: DCBROWSECOL und Width [ERLEDIGT]

Beitrag von Manfred » Sa, 09. Feb 2019 15:42

ich fasse es nicht. Ich habe jetzt ellenlang herumgebastelt um herauszufinden, wie ich (auto) SIZE für browse und Say und Get usw. vernünftig hinkriege. Nichts hat geklappt. Nur Murks. Dann habe ich einfach mal in einem lichten Moment unter DCGETOPTIONS GETFONT UND FONT angegeben. Und jetzt sieht es so aus, als wenn alles berücktsichtigt wird. Sogar die individuell eingestellten Werte für die DPI Zahl, die man von-bis durchgehend angeben kann. Manmanman, was für ein Drama... Mal schauen, wie es nun beim Andwender vor Ort klappt.
Gruß Manfred
Mitglied der XUG Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite

Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 18818
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel

Re: DCBROWSECOL und Width [ERLEDIGT]

Beitrag von Manfred » Mo, 11. Feb 2019 10:09

OK, der Morgen fängt nicht so gut an. Wie kann es sein, das ein System klappt und das andere wieder nicht? Ich habe verschiedene Win 10 Konfigs getestet und bei denen klappt alles wie gewollt. Dann kommt ein weiteres Win10 OS und da klappt es wieder nicht. Einmal ist es eins, welches größer als FHD ist, dann klappt ein anderes wieder nicht in dem die DPI Zahl von hand auf 115% eingestellt wurde.
Gruß Manfred
Mitglied der XUG Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite

Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 18818
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel

Re: DCBROWSECOL und Width [ERLEDIGT]

Beitrag von Manfred » Di, 26. Feb 2019 16:52

Hallo Tom,
ich muß Dich leider korrigieren. Wenn ich WIDTH weglasse, dann wird nicht der Header als Mindestbreite genommen. Wonach sich Roger richtig, erschließt sich mir nicht derzeit. Aber es klappt doch nicht so, wie erhofft. Irgendwas mache ich noch falsch.
Gruß Manfred
Mitglied der XUG Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite

Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 7693
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Kontaktdaten:

Re: DCBROWSECOL und Width [ERLEDIGT]

Beitrag von Tom » Di, 26. Feb 2019 16:58

Wenn Du WIDTH weglässt, dann nicht, stimmt. Aber wenn Du eine Breite angibst, gelingt es Dir nicht, unter die nötige Breite der Spaltenüberschrift zu gehen. Das schaffst Du dann erst mit einem direkten :SetSize() oder mit der Maus.
Herzlich,
Tom

Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 18818
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel

Re: DCBROWSECOL und Width [ERLEDIGT]

Beitrag von Manfred » Di, 26. Feb 2019 17:53

bei einer WIDTH von 0 dreht die Spalte total am Rad und erzeugt nur Linien in kleinen Abständen und bei 1 wird tatsächlich die Headerbreite als min gewählt.
Gruß Manfred
Mitglied der XUG Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite

Antworten