Seite 1 von 2

DCPUSHBUTTON vs. DCPUSHBUTTONXP

Verfasst: Mo, 04. Mär 2019 9:08
von Manfred
ich bin gerade dabei meine Routinen auf Skalierung einzustellen. Dabei mußte ich feststellen, das Grafiken auf Pushbuttons z.B. auch automatisch angepaßt werden müssen, weil es sonst ein wenig lustig aussieht, wenn die gaaanz winzig werden. Jetzt stellt sich mir aber die Frage, wie man sowas z.B. auf Pushbutton macht? Die müssen ja wohl skaliert werden. Ist das auf DCPUSHBUTTON überhaupt so möglich/empfehlenswert, oder sollte man da lieber DCPUSHBUTTON XP nehmen? Mit beiden Varianten habe ich so meine Probleme mit der exakten programmiern. Kann mir jemand mal auf die Sprünge helfen, wie ma sowas am elegantesten/einfachsten löst, das die Grafiken auf den Pushbutton mit angepaßt werden? Oder geht das überhaupt nicht vernünftig automatisch?

Re: DCPUSHBUTTON vs. DCPUSHBUTTONXP

Verfasst: Mo, 04. Mär 2019 9:30
von Manfred
ich habe gerade den Paramenter SCALEBITMAP bei DCPUSHBUTTON entdeckt. den habe ich mal hinzugefügt. Jetzt sieht es aber m.E. grottenübel aus. Sie werden zwar skaliert, aber....

Re: DCPUSHBUTTON vs. DCPUSHBUTTONXP

Verfasst: Mo, 04. Mär 2019 9:56
von Tom
Bitmapskalkierung sieht mit Xbase++ immer scheiße aus. Da findet kein "smart resize" o.ä. statt, sondern es werden einfach Pixel weggelassen. Deshalb ist es sinnvoller, die Bitmaps in verschiedenen - vorskalierten - Größen mitzuliefern und je nach Darstellung die Ressource zu wechseln, um sie dann möglichst in unskalierter Form anzuzeigen. Das geht am leichtesten mit Icons, die innerhalb einer Datei ohnehin in diversen Größen vorliegen können. Ich lade alle Icons, die auf Pushbuttons (XP) sitzen, in der besten passenden Größe und zeige sie auch in dieser an.

Re: DCPUSHBUTTON vs. DCPUSHBUTTONXP

Verfasst: Mo, 04. Mär 2019 10:27
von Manfred
OK,
das hattes Du schonmal hier erwähnt, aber woher weißt Du denn, welches Icon Du wann laden mußt?

Re: DCPUSHBUTTON vs. DCPUSHBUTTONXP

Verfasst: Mo, 04. Mär 2019 11:16
von Tom
Ich arbeite mit einem Kleinster-gemeinsamer-Nenner-Skalierungsfaktor, den ich errechne, und dann gibt es u.a. eine Funktion "BestFitSize". Wenn ein Standard-Pushbutton 1 Zeile nach eXpress++-Notation hoch ist (also 20 Pixel), dann ist BestFitSize 16x16, die nächstkleinere Icongröße. Wenn der Skalierungsfaktor 1,5 ist, ist eine Standard-Schaltfläche 30 Pixel hoch. BestFitSize wäre dann 24x24. Bei einer Skalierung von 1,6 oder 160 Prozent wären es aber 32x32. Diese Icongrößen lade ich dann in der zentralen Funktion, über die sich die Pushbuttons ihre Icons holen.

Re: DCPUSHBUTTON vs. DCPUSHBUTTONXP

Verfasst: Mo, 04. Mär 2019 11:20
von Manfred
Klappt denn die Skaliereung unter den DCPUSHBUTTONXP auch nicht richtig? Ich habe das noch nicht hinbekommen um es zu testen.

Re: DCPUSHBUTTON vs. DCPUSHBUTTONXP

Verfasst: Mo, 04. Mär 2019 18:30
von Wolfgang Ciriack
Also bei DCPUSHBUTTONXP... BITMAP gibt es ja ein SCALE, den benutze ich mit verschiedenen Faktoren (0.4, 0.6) bei 48x48 Bitmaps, das klappt ganz gut.

Re: DCPUSHBUTTON vs. DCPUSHBUTTONXP

Verfasst: Mo, 04. Mär 2019 18:47
von Manfred
Wolfgang,
kannst Du mal eine Beispielzeile posten dazu? Ich habe das mit dem Picture nicht hinbekommen. Irgendwas mache ich falsch.

Re: DCPUSHBUTTON vs. DCPUSHBUTTONXP

Verfasst: Mo, 04. Mär 2019 18:51
von Wolfgang Ciriack

Code: Alles auswählen

@37, 3 DCPUSHBUTTONXP ;
        CAPTION "Anzeige Terminfenster" OFFSET 0 ;
        PARENT oStaticMel ;
        SIZE 240, 50 ;
        CONFIG M->oGDL:oBtnConf1 ;
        FONT M->oGDL:cSayFont ;
        BITMAP TB_MONAT ALIGN XBPALIGN_VCENTER+XBPALIGN_LEFT OFFSET 5 SCALE 0.6 ;
        ACTION {|| ShowMsgWin(.T.)}

Re: DCPUSHBUTTON vs. DCPUSHBUTTONXP

Verfasst: Mo, 04. Mär 2019 19:04
von Manfred
aha, da liegt wohl mein Unverständnis. Warum gibt man da noch eine Caption an? Es wird doch ein Bitmap angezeigt, oder?

Re: DCPUSHBUTTON vs. DCPUSHBUTTONXP

Verfasst: Mo, 04. Mär 2019 19:23
von Manfred
gibt eigentlich bei DCPUSHBUTTONXP keinen Cargo Slot? Den benutze ich bei DCPUSHBUTTON. Ich kann ihn aber im Objektinspektor nur als leer auffinden.

Re: DCPUSHBUTTON vs. DCPUSHBUTTONXP

Verfasst: Mo, 04. Mär 2019 19:32
von Wolfgang Ciriack
Ich gebe da nur noch ein CAPTION an, weil ich beides haben will, ein Bitmap links mit Text rechts daneben oder unter dem Bitmap (dann muss man das ALIGN ändern).

Re: DCPUSHBUTTON vs. DCPUSHBUTTONXP

Verfasst: Mo, 04. Mär 2019 19:35
von Manfred
OK,
dachte ich mir schon. Und wozu ist OFFSET gut? Das wird in der Anleitung nicht erklärt.

Re: DCPUSHBUTTON vs. DCPUSHBUTTONXP

Verfasst: Mo, 04. Mär 2019 19:37
von Wolfgang Ciriack
Laut Doku gibt es auch ein CARGO.

Re: DCPUSHBUTTON vs. DCPUSHBUTTONXP

Verfasst: Mo, 04. Mär 2019 19:41
von Wolfgang Ciriack
Mit Offset kannst du es verschieben (positionieren), z.B. bei dem Bitmap, damit es nicht ganz links am Rand sitzt. Bei CAPTION kannst du damit (in meinem Beispiel) den Abstand vom Bitmap vergrößern. Ist im Prinzip so etwas wie ein Rand.

Re: DCPUSHBUTTON vs. DCPUSHBUTTONXP

Verfasst: Mo, 04. Mär 2019 19:41
von Manfred
richtig, das schreibe ich was rein, aber im Objektinspektor steht NIL und wenn man den abfragt, gibt es eine Fehlermeldung.

Re: DCPUSHBUTTON vs. DCPUSHBUTTONXP

Verfasst: Mo, 04. Mär 2019 19:51
von Manfred
prima, das mit dem Scale klappt und sieht sauber aus. Jetzt muß ich nur noch das mit dem CArgo finden, warum das nicht will.

Re: DCPUSHBUTTON vs. DCPUSHBUTTONXP

Verfasst: Di, 19. Mär 2019 19:35
von Wolfgang Ciriack
Ich habe heute bei DCPUSHBUTTONXP Cargo benutzt und es klappt:

Code: Alles auswählen

for i:=1 to l
   if i=1
      vtg:=XBP_BEGIN_GROUP
   elseif i=l
      vtg:=XBP_END_GROUP
   else
      vtg:=XBP_WITHIN_GROUP
   endif
   sB:="oBtn"+alltrim(str(i))

   @4,btadd+(i-1)*15 DCPUSHBUTTONXP CAPTION aButt[i][1] ;
       SIZE 14,1.2 ;
       CONFIG M->oGDL:oBtnConf2 ;
       OBJECT &sB ;
       CARGO aButt[i][3] ;
       BITMAP aButt[i][2] ALIGN XBPALIGN_VCENTER+XBPALIGN_LEFT OFFSET 5 SCALE 0.8 ;
       ACTION {|a,b,o| retw:=o:cargo[3], DC_ReadGuiEvent(DCGUI_EXIT_OK,GetList)} ;
       TABGROUP vtg ;
       TABSTOP ;
       ACCELKEY aButt[i][4]

   if aButt[i][3]=vorgabe
      sF:="oBtn"+alltrim(str(i))
   endif
next

Re: DCPUSHBUTTON vs. DCPUSHBUTTONXP

Verfasst: Di, 19. Mär 2019 20:37
von Manfred
wie sprichst Du den nachher den Inhalt von Cargo an?
mit cargo[3] := "xyz"? So wird Cargo ja bei den normalen Pushbutton angesprochen.

Re: DCPUSHBUTTON vs. DCPUSHBUTTONXP

Verfasst: Mi, 20. Mär 2019 6:52
von Wolfgang Ciriack
Ja, so wie im Action Block, o:cargo[3].

Re: DCPUSHBUTTON vs. DCPUSHBUTTONXP

Verfasst: Mi, 31. Jul 2019 9:45
von Manfred
es tut mir fürchterlich leid, aber es klappt nicht bei mir. Wenn ich DCPUSHBUTTON Cargo belege und dann mit :cargo[3] abfrage, bekomme ich immer NIL zurück. Da steht zum Verrecken nichts drin.

Re: DCPUSHBUTTON vs. DCPUSHBUTTONXP

Verfasst: Mi, 31. Jul 2019 10:18
von Martin Altmann
Manfred,
:cargo[3] wird auch nur was zurückliefern, wenn dort ein Array mit mindestens drei Elementen (oder eine Zeichenkette mit mindestens drei Zeichen Länge) drin steht :!:
Wie also hast Du vorab :cargo belegt?

Viele Grüße,
Martin

Re: DCPUSHBUTTON vs. DCPUSHBUTTONXP

Verfasst: Mi, 31. Jul 2019 10:44
von Manfred
da steht anfänglich "AN" drin, wie auch bei den normalen DCPUSHBUTTON.

Re: DCPUSHBUTTON vs. DCPUSHBUTTONXP

Verfasst: Mi, 31. Jul 2019 10:55
von Martin Altmann
Und wie willst du das dritte Element einer zwei Zeichen langen Zeichenkette abfragen?

Viele Grüße,
Martin

Re: DCPUSHBUTTON vs. DCPUSHBUTTONXP

Verfasst: Mi, 31. Jul 2019 10:57
von Manfred
Martin,
wir reden hier von express++. In der Anleitung steht bei beiden das gleiche. Deshalb meine Frage, wieso bei dem einen klappt und bei dem anderen nicht.