DCBROWSECOL und Width [ERLEDIGT]

Moderator: Moderatoren

Antworten
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

DCBROWSECOL und Width [ERLEDIGT]

Beitrag von Manfred »

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 Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: DCBROWSECOL und Width [ERLEDIGT]

Beitrag von Manfred »

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 Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: DCBROWSECOL und Width [ERLEDIGT]

Beitrag von Manfred »

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 Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: DCBROWSECOL und Width [ERLEDIGT]

Beitrag von Koverhage »

Ich mache das so (keine Ahnung ob das richtig ist)
oBrowse:refreshall(), oBrowse:forcestable(),
Gruß
Klaus
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: DCBROWSECOL und Width [ERLEDIGT]

Beitrag von Manfred »

: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 Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: DCBROWSECOL und Width [ERLEDIGT]

Beitrag von Tom »

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: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: DCBROWSECOL und Width [ERLEDIGT]

Beitrag von Manfred »

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 Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: DCBROWSECOL und Width [ERLEDIGT]

Beitrag von Tom »

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: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: DCBROWSECOL und Width [ERLEDIGT]

Beitrag von Manfred »

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 Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: DCBROWSECOL und Width [ERLEDIGT]

Beitrag von Tom »

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: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: DCBROWSECOL und Width [ERLEDIGT]

Beitrag von Manfred »

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 Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: DCBROWSECOL und Width [ERLEDIGT]

Beitrag von AUGE_OHR »

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) 206-mal heruntergeladen
gruss by OHR
Jimmy
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: DCBROWSECOL und Width [ERLEDIGT]

Beitrag von Manfred »

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 Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: DCBROWSECOL und Width [ERLEDIGT]

Beitrag von Manfred »

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 Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: DCBROWSECOL und Width [ERLEDIGT]

Beitrag von Manfred »

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 Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: DCBROWSECOL und Width [ERLEDIGT]

Beitrag von Tom »

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: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: DCBROWSECOL und Width [ERLEDIGT]

Beitrag von Manfred »

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 Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Antworten