Seite 1 von 2

Funktion zum Button erstellen über die Bitmapgröße

Verfasst: Mi, 26. Apr 2023 10:27
von Bruno
Hallo Forum,
gibt es bei den Beispielen von Xbasee++ 1.9.355 eine Function oder Procedure welche ein Button über die Bitmapgröße erstellt?

Über eine Bitmap kann man ohne eExpress mehrzeilige Buttons erzeugen.

Bräuchte etwas Hilfestellung.

Beschreibung der XbPacks 1 -3 als PDF oder CHM wäre auch gut, Beim Quellcodeverlust waren auch die Downloads von damals ( bei Alaska ).

Re: Funktion zum Button erstellen über die Bitmapgröße

Verfasst: Mi, 26. Apr 2023 10:41
von Jan
Bruno,

für die 1.9 gibt es den XbPack1, der einen XbpImageButton beinhaltet. Inkl. Code. Also Xbase++ pur.

Wenn Du Dich auf der Alaska-Homepage anmeldest kannst Du Dir die runter laden. Wobei ich nicht weiß was alle noch im Downloadbereich liegt ohne laufende Subscription. Notfalls müsstest Du Alaska anmailen, ob die Dir den so rausgeben.

Jan

Re: Funktion zum Button erstellen über die Bitmapgröße

Verfasst: Mi, 26. Apr 2023 11:10
von Tom
Mehrzeilige Textcaptions gehen auch ohne Bitmaps.

Re: Funktion zum Button erstellen über die Bitmapgröße

Verfasst: Mi, 26. Apr 2023 11:36
von Bruno
Jan hat geschrieben: Mi, 26. Apr 2023 10:41 Bruno,

für die 1.9 gibt es den XbPack1, der einen XbpImageButton beinhaltet. Inkl. Code. Also Xbase++ pur.

Wenn Du Dich auf der Alaska-Homepage anmeldest kannst Du Dir die runter laden. Wobei ich nicht weiß was alle noch im Downloadbereich liegt ohne laufende Subscription. Notfalls müsstest Du Alaska anmailen, ob die Dir den so rausgeben.

Jan
Hallo Jan, ich habe die XbPack1, XbPack2, XbPack3 Dlldateien, aber keine Beschreibung.

Re: Funktion zum Button erstellen über die Bitmapgröße

Verfasst: Mi, 26. Apr 2023 11:38
von Bruno
Tom hat geschrieben: Mi, 26. Apr 2023 11:10 Mehrzeilige Textcaptions gehen auch ohne Bitmaps.
Hallo Tom,

Nur mit Xbase++ ohne eExpress?
Aber die Frage ist wegen einer Funktion welche einen Button über die Bitmapgröße erstellt.
Der Satz, das damit auch mehrzeilige Buttons gemacht werden, war ein Beispiel.
Wenn ich eine Bitmap mit einer Tür einem Button zuweisen will, wollt ich das der Button nach der Größe der Bitmap erzeugt wird.
Z.B. Bitmap 100 x 80 = der Button wird 100 x 80

Re: Funktion zum Button erstellen über die Bitmapgröße

Verfasst: Mi, 26. Apr 2023 12:15
von Tom
Hallo, Bruno.
Nur mit Xbase++ ohne eExpress?
Über die Presentation (:SetPresParam) kann man einer Buttoncaption u.a. die Eigenschaft "XBPALIGN_WORDBREAK" zuweisen (XBP_PP_ALIGNMENT). Ich habe das zwar noch nie nativ gemacht, aber ein normaler DCPUSHBUTTON erzeugt einen XbpPushbutton (ohne Ownerdrawing), und da klappt das.

Bei dieser Bitmap-Sache ist nicht ganz klar, worauf Du hinauswillst. Mit :SetSize und :SetPos kannst Du ja auch im Nachhinein die Größe und Position von XbParts ändern (und mit der Mischmethode beides gleichzeitig). Wenn Du also weißt, wie groß Deine Bitmaps sind, gibst Du das am besten beim Erzeugen gleich mit an. Oder suchst Du nach einer Möglichkeit, die Größe herauszufinden? Dafür müsstest Du Dir mal die XbpBitmap-Klasse anschauen, die hilft dabei.

Re: Funktion zum Button erstellen über die Bitmapgröße

Verfasst: Mi, 26. Apr 2023 12:34
von Bruno
Tom hat geschrieben: Mi, 26. Apr 2023 12:15 Hallo, Bruno.

Bei dieser Bitmap-Sache ist nicht ganz klar, worauf Du hinauswillst.
Hallo Tom,
Ich will ganz einfach einen Button erstellen, der so groß ist wie die Bitmap in der :caption.
Als generelle Funktion.
oBtn1 := XbpPushButton():new(,, {aPosition}, {aBildgröße} )
oBtn1 : caption := "das Bild"

Button so groß wie die Bitmap.

Re: Funktion zum Button erstellen über die Bitmapgröße

Verfasst: Mi, 26. Apr 2023 13:00
von Jan
Bruno,

wenn Du das Bitmap per XbpBitmap() einliest kannst Du ja hinter her per :xsize und :ysize die Größe in Pixeln auslesen. Und diese Maße plus ein paar Sicherheitspixel für Buttonrand etc. dann für die Buttongröße benutzen. Schau mal in die Doku zu XbpBitmap.

Jan

Re: Funktion zum Button erstellen über die Bitmapgröße

Verfasst: Mi, 26. Apr 2023 16:06
von Bruno
Jan hat geschrieben: Mi, 26. Apr 2023 13:00 Bruno,

wenn Du das Bitmap per XbpBitmap() einliest kannst Du ja hinter her per :xsize und :ysize die Größe in Pixeln auslesen. Und diese Maße plus ein paar Sicherheitspixel für Buttonrand etc. dann für die Buttongröße benutzen. Schau mal in die Doku zu XbpBitmap.

Jan
Hallo Jan,
habe bei Alaska angerufen, wegen einem eventuellen nochmaligen Download der XbPacks.
Sie wollen zurückrufen, da unter der Kundennummer von mir drei verschiedene Namen vorliegen muss ich erst mal abwarten.
Könntest Du ein kleines Beispiel mit XbpImageButton posten, habe die dll und LIB Dateien, da schon mal installiert war.
Was die Einbindung der Bitmaps angeht, da muss ich mir auch noch die Beschreibung von ARC reinziehen.

Re: Funktion zum Button erstellen über die Bitmapgröße

Verfasst: Mi, 26. Apr 2023 18:09
von brandelh
war das nicht was mit HTML Code für Buttons ?

hab ich aber nie benutzt

Re: Funktion zum Button erstellen über die Bitmapgröße

Verfasst: Mi, 26. Apr 2023 18:11
von Bruno
Die Downloadmöglichkeit für 1.9 gibt es nicht mehr, was aber auch verständlich ist nach einer so langen Zeitspanne.

Re: Funktion zum Button erstellen über die Bitmapgröße

Verfasst: Mi, 26. Apr 2023 18:29
von Bruno
brandelh hat geschrieben: Mi, 26. Apr 2023 18:09 war das nicht was mit HTML Code für Buttons ?

hab ich aber nie benutzt
Hallo Hubert,
nein, Alaska hatte im ersten XbPack zwei weitere Klassen rausgegeben, XbpImageButton und XbpImageTabPage.
im zweiten war XBPFORMATTEDLABEL und XBPPROGRESSBAR,
im dritten war CHECKBOXRENDERER, DRAWFRAMECONTROL, INVISIBLEGET, SHGETFILEINFOA, XBPCHECKBOXCOLUMN, XBPFOLDERDIALOG,
XBPFOLDERPICKER, XBPGET, XBPGETCOLUMN, XBPGRADIENTCOLUMN, XBPROWPICKBROWSE.

Die Info hab ich aus den Dll Dateien.

Re: Funktion zum Button erstellen über die Bitmapgröße

Verfasst: Mi, 26. Apr 2023 23:51
von brandelh
Bruno hat geschrieben: Mi, 26. Apr 2023 18:11 Die Downloadmöglichkeit für 1.9 gibt es nicht mehr, was aber auch verständlich ist nach einer so langen Zeitspanne.
das ist so nicht richtig, wenn man eine aktive Subscription hat, kann man auch ältere Versionen noch auswählen.
Zumindest sehe ich 1.82, 1.90 und die 2.0 im download Bereich meines Kundenkontos.

Das mit HTML und CSS Buttons / Fenstern geht erst ab einer neueren 2.0

das andere ist so lange her ... ich kann mich nicht mehr erinnern.

Welche Xbase++ Version hast du denn genau ?

1.90.???

Re: Funktion zum Button erstellen über die Bitmapgröße

Verfasst: Do, 27. Apr 2023 0:27
von AUGE_OHR
hi Bruno,

es ist Quatsch das man die Grösse eines Image "wissen" muss um einen entsprechned grossen Button zu bekommen
:autoSize- Größe des Pushbuttons automatisch an die Caption anpassen

Wird :autoSize auf .T. (wahr) gesetzt, erfolgt eine automatische Anpassung der Größe eines Pushbuttons, so daß die Caption vollständig sichtbar ist.
Dabei darf der Parameter <aSize> bei der Methode :create() NICHT angegeben werden, bzw. er muß das Array {0,0} sein.
hier eine Beispiel für einen Button mit Ressource als Image

Code: Alles auswählen

#include "xbp.ch"
#include "Appevent.ch"

PROCEDURE appsys ; return

PROCEDURE Main()
LOCAL nEvent, oXbp, mp1, mp2
LOCAL oDlg, oButton, lExit := .F. , nTimeout := 0

   oDlg := XbpDialog():New(AppDesktop(),,,{1024,768},,.F.)
   oDlg:taskList := .T.
   oDlg:title    := "Button wioth big Image"
   oDlg:icon     := 1
   oDlg:close    := {|p1,p2,oo| lExit := .T.}
   oDlg:Create()

   oDlg:drawingArea:ClipChildren := .T.

   oButton := XbpPushButton():new(oDlg:drawingArea , , {0, 0} )
   oButton:caption := 2001
   oButton:autoSize := .T.   
   oButton:activate:= {|| msgbox("hello world","Hinweis 1") }
   oButton:create()
*MsgBox(var2char(oButton:CurrentSize()))

   CenterControl(oButton,oDlg)
   CenterControl(oDlg)
   
   oDlg:Show()
   SetAppFocus(oDlg)

   DO WHILE .NOT. lExit
      nEvent := APPEVENT( @mp1, @mp2, @oXbp, nTimeout )     // nTimeout
      DO CASE
         CASE nEvent == xbe_None 
            // Timeout

         OTHERWISE
            oXbp:handleEvent( nEvent, mp1, mp2 )

      ENDCASE
   ENDDO

RETURN
und hier die ARC

Code: Alles auswählen

ICON
     0001     = "d:\ALASKA\RES\BOLOR.ICO"

BITMAP
     2001     = "c:\ALASKA\XPPW32\RESOURCE\bitmap\ABlue.bmp"

VERSION
   "CompanyName"      = "Auge & Ohr"
   "ProductName"      = "BIGBUTT"
   "ProductVersion"   = "0.001"
   "FileVersion"      = "0.001"
   "FileDescription"  = "big Button with Image"
   "InternalName"     = "BIGBUTT"
   "LegalCopyright"   = "Copyright (c) Yiu-Software"
   "OriginalFilename" = "BIGBUTT.EXE"

LANGUAGE = "DE"

#define MANIFEST_RESID 1
#define MANIFEST 24

USERDEF MANIFEST
  MANIFEST_RESID = FILE "d:\ALASKA\RES\WIN10.MANIFEST"

Re: Funktion zum Button erstellen über die Bitmapgröße

Verfasst: Do, 27. Apr 2023 7:15
von Bruno
brandelh hat geschrieben: Mi, 26. Apr 2023 23:51

Welche Xbase++ Version hast du denn genau ?

1.90.???
Hallo Hubert,
Ich hab die 1.9 355 / 1.9 SL1

Re: Funktion zum Button erstellen über die Bitmapgröße

Verfasst: Do, 27. Apr 2023 7:20
von Bruno
Hallo Jimmy,
was hat das eigentlich mit diesem MANIFEST auf sich?
Hab das auch bei einigen Beispielen gesehen, muss das sein?

Re: Funktion zum Button erstellen über die Bitmapgröße

Verfasst: Do, 27. Apr 2023 8:30
von Tom
Manifest-Dateien erzeugt man und linkt man ggf. als Ressource an die Anwendung, um z.B. visuelle Stile anbieten zu können, aber auch für die registrierungsfreie Auslieferung von ActiveX-Komponenten. Einfach mal nach "Manifest" im Forum suchen.

Wenn man Bitmaps als Captions für Buttons wählt, dann sollte man nicht die Buttons an den Bitmaps ausrichten, sondern umgekehrt - man sollte alle Bitmaps so skalieren, dass sie verzerrungsfrei dargestellt werden, und wenn man mehrere Buttons gruppiert, sollten sowieso alle Buttons mindestens die gleiche Höhe haben, sonst sieht das scheiße aus. Das tut es u.U. auch, wenn man "autoSize" verwendet und Bitmaps vergrößert oder verkleinert werden, weil die Skalierungsmethoden bei Bitmaps zu eckigen Rundungen, verzerrten Kanten und unschönen Farbübergängen führen. Der umgekehrte Weg ist also der richtigere. Gegebenenfalls liefert man Bitmaps in mehreren Größen als Ressource mit, wenn die Auflösung des Rechners das verlangt.

Eigentlich aber sollte man mit Icons als Grafikcaptions arbeiten, die skalieren schöner, und die Buttoncaptions (Grafik und Text) über Ownerdrawing selbst zeichnen. Da kann man dann auch alle Eventualitäten abfangen, den Text schön neben dem Icon platzieren und was auch immer tun.

Reine Bitmaps als Captions sind schwer Neunziger. 8)

Re: Funktion zum Button erstellen über die Bitmapgröße

Verfasst: Do, 27. Apr 2023 12:43
von Bruno
Hallo Tom,

Mir ging es um mehrzeilige Buttons.
Ich bin kein Profi in Sachen Xbase und habe 4 Bitmapbilder gemacht, Hintergrund einfarbig und mit Text reingeschrieben was für den Betrachter zu sehen sein soll. Da ich sonst mehrzeilige Captions gebraucht hätte. Bild
Alle vier Bitmaps sind gleich groß. Und wenn man einen Bruder hat der zwar mit dem Programm arbeiten will, aber bei jeder Kleinigkeit rumzickt, ist das die beste Lösung. Mit den ganzen Parts von Xbase, setzt man sich nicht mal schnell auseinander.

Wer möchte schaut in die ZIP, mit 1.9 355 compiliert, aber alles dabei für andere Versionen.

Re: Funktion zum Button erstellen über die Bitmapgröße

Verfasst: Do, 27. Apr 2023 13:12
von Jan
Bruno,

wenn Du derart formatierte Buttons brauchst dann schau DIr doch mal XbpHtmlWindow() an. Da kannst Du den Inhalt per HTML formatieren. Und mußt nicht statische Bilder erzeugen, die bei jeder möglichen Ändernug wieder von vorne erstellt werde müssen.

Ich habe damit mal eine Kasse gebaut, die ja nun mal eine Vielzahl variabler Buttons benötigt.

Jan

Re: Funktion zum Button erstellen über die Bitmapgröße

Verfasst: Do, 27. Apr 2023 13:23
von Tom
Hallo, Bruno.

Verstehe. Aber dann weißt Du doch, wie hoch die Bitmaps sind, oder?

Zum Hinweis von Jan: Im Prinzip hat er damit recht, auf diese Weise kann man die schickste Oberfläche machen, die auch noch responsiv ist. Man muss dazu wissen, dass nicht nur Schaltflächen auf Klicks reagieren können, sondern im Prinzip alles, was sich auf dem Bildschirm anzeigen lässt. Jedes XbPart kennt Slots wie "LbClick" oder "LbDblClick" und andere, und wenn man da Codeblöcke reinsteckt, dann reagiert auch ein einfacher Text auf dem Bildschirm auf einen Klick (er verändert nur nicht sein Aussehen, das muss man dann händisch machen). Und ein XbpHtmlWindow kann ja echt ausgefuchste CSS-JS-Sachen enthalten, also sich noch cooler als eine einfach Schaltfläche verhalten.

Aber Dir geht's erstmal um was anderes. Am schnellsten kriegst Du das bewerkstelligt, wenn Du die Größen der Bitmaps irgendwo speicherst (in einem Array) und bei der Erzeugung der Buttons für die Größe der Buttons verwendest. Ansonsten musst Du sie erst über die XbpBitmap-Klasse laden und die Größe auslesen. Das ist natürlich eleganter.

Re: Funktion zum Button erstellen über die Bitmapgröße

Verfasst: Do, 27. Apr 2023 14:01
von Bruno
Tom hat geschrieben: Do, 27. Apr 2023 13:23 Hallo, Bruno.

Und ein XbpHtmlWindow kann ja echt ausgefuchste CSS-JS-Sachen enthalten, also sich noch cooler als eine einfach Schaltfläche verhalten.

Aber Dir geht's erstmal um was anderes. Am schnellsten kriegst Du das bewerkstelligt, wenn Du die Größen der Bitmaps irgendwo speicherst (in einem Array) und bei der Erzeugung der Buttons für die Größe der Buttons verwendest. Ansonsten musst Du sie erst über die XbpBitmap-Klasse laden und die Größe auslesen. Das ist natürlich eleganter.
Hallo Tom,
habe das gesammte Packet in der Zip Datei. Ich will keine fertige Lösung, aber ein Beispiel wie man die Grösse von Bitmaps ermittelt und worauf geachtet werden muss, ebenso ein Beispiel betreff Html. Die Antwort von Jimmy, mit dem autosize war erstmal perfekt. Als mein Bruder, der Programmnutzer, das was ich auch euch hier geschickt hab, gesehen hat, strahlte er wie ein Honigkuchenpferd, " Endlich mal was, was man ohne Brille erkennt, damit komme ich klar, ist eindeutig."

Re: Funktion zum Button erstellen über die Bitmapgröße

Verfasst: Do, 27. Apr 2023 14:13
von Werner_Bayern
Bruno hat geschrieben: Do, 27. Apr 2023 7:15 Ich hab die 1.9 355 / 1.9 SL1
Dann kein XbpHtmlWindow!

Re: Funktion zum Button erstellen über die Bitmapgröße

Verfasst: Do, 27. Apr 2023 15:33
von Jan
Werner,

stimmt. Ich hatte mich von diesem grafischen Button ablenken lasen und nicht mehr an die Version von Bruno gedacht.

Jan

Re: Funktion zum Button erstellen über die Bitmapgröße

Verfasst: Do, 27. Apr 2023 15:41
von Bruno
Na Dann stell ich mal eine andere Frage!
Wenn ich über diesen button ein externes Programm starte, wie verhindere ich dann, das nach Beendigung des externen Programmes weiter Ereignisse von Tastatur oder Maus welche durch blindes drauflos klicken verarbeitet werden.
Z.B. Externes Programm Starten, jetzt klickt der Anwender noch tausendmal auf den Button, ( weil er noch nicht kapiert hat, daß das externe Programm schon läuft ) wenn das externe Programm beendet worden ist, startet es gleich wieder. Er hat ja noch mehrfach draufgeklickt.

Re: Funktion zum Button erstellen über die Bitmapgröße

Verfasst: Do, 27. Apr 2023 15:46
von Bruno
Jan hat geschrieben: Do, 27. Apr 2023 15:33 Werner,

stimmt. Ich hatte mich von diesem grafischen Button ablenken lasen und nicht mehr an die Version von Bruno gedacht.

Jan
Ich könnte ja hier für die neue Version einen Spendenaufruf machen um Ablenkungen zu verhindern :angel5: :angel5: :angel5: :angry4: :angry4: :angry4: