GetGadgetToolTip(#Gadget)

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

GetGadgetToolTip(#Gadget)

Beitrag von Xaby »

Mmmm.

Gibbed nüsch.

Hab einige ButtonImageGadgets ... die haben Tooltips, aber keinen Text.
Nun wollte ich in der Statusleiste den ToolTipText anzeigen lassen, je nach dem, welcher Gadget gedrückt wurde.

Wie bekomme ich raus, was als ToolTip da steht, ohne extra die Tips seperat in irgendwelche Arrays oder so zu schreiben?

Gruß, Folker :allright:
Kinder an die Macht http://scratch.mit.edu/
Benutzeravatar
dysti
Beiträge: 656
Registriert: 10.02.2006 18:34
Wohnort: Schlicktown

Beitrag von dysti »

Xaby:
Irgendwie verstehe ich deine Frage nicht. Was willst du genau?
PB5 / Spiderbasic / WB14 / Win7 / Win8.1 / Win10 / Debian 9
Benutzeravatar
Macros
Beiträge: 1361
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Beitrag von Macros »

Er stezt für ein Gadget den Tooltip mittels
GadgetToolTip(#gadget,Text$)
und will Text$ nun anhand der Gadgetnummer ermitteln.
Ohne gespeichert zu haben, was der Inhalt war.
Benutzeravatar
#NULL
Beiträge: 2238
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

xaby möchte eine funktion, mit der man zu einem gadget den zugewiesenen tooltip-text ermitteln kann. PB stellt nur eine funktion zum zuweisen bereit, GadgetToolTip().

vielleicht kommt man an sowas über die gadget-structure ran.
my pb stuff..
Bild..jedenfalls war das mal so.
Benutzeravatar
dysti
Beiträge: 656
Registriert: 10.02.2006 18:34
Wohnort: Schlicktown

Beitrag von dysti »

Trotzdem verstehe ich nicht, wofür das nützlich sein soll?
Im Programm habe ich die Tooltips doch zugewiesen!
Da weiß ich doch, welcher Text zu welchem Gadget gehört.
Ansonsten kann ich abfragen welches Gadget aktiv ist und der Statuszeile diesen Text zuweisen.
Schreiben muß man den Tooltiptext sowieso.
Kann mir das mal einer verklackern?
PB5 / Spiderbasic / WB14 / Win7 / Win8.1 / Win10 / Debian 9
Benutzeravatar
Macros
Beiträge: 1361
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Beitrag von Macros »

Geht um Prinzip :D
könnte höchstens nützten,
um die Tooltips einer fremden Anwendung zu bekommmen.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

Macros hat geschrieben:Geht um Prinzip :D
nicht unbedingt. Kann auch nützlich sein, wenn beispielsweise Gadgets
dynamisch erstellt werden, deren Tooltip-Texte aus externen Sprachdateien
kommen.

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Nur fuer das eigene PB Programm !

Code: Alles auswählen

 ; PUREBASIC V4
  Procedure.s GetToolTipText(id)
    Protected hTP.l,hParent.l
    Protected Buffer.s,ti.TOOLINFO
    !EXTRN _PB_Object_GetThreadMemory@4
    !EXTRN _PB_Gadget_Globals
    !MOV   Eax,[_PB_Gadget_Globals]
    !PUSH  Eax
    !CALL  _PB_Object_GetThreadMemory@4 
    !MOV ecx,[Eax]
    !MOV [p.v_hParent],ecx
    !MOV Eax,[Eax+24]
    !MOV [p.v_hTP],Eax 
    Buffer = Space(255)
    ti\cbSize = SizeOf(TOOLINFO)
    ti\hwnd = hParent
    ti\uId = GadgetID(id)
    ti\lpszText = @Buffer
    SendMessage_(hTP,#TTM_GETTEXT,0,@ti)
    ProcedureReturn Buffer
  EndProcedure
Beispiel :

Code: Alles auswählen

  hwnd = OpenWindow(0,0,0,300,300,"")

  CreateGadgetList(hwnd)
  
  If ButtonGadget(0,10,10,100,24,"")
    GadgetToolTip(0,"ToolTip")
  EndIf
  
  Debug GetToolTipText(0)
  
  Repeat 
    event = WaitWindowEvent()
    
  Until event = 16
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Beitrag von Xaby »

Nur gut, dass wir hier Freaks bei haben :mrgreen:

>> @edel, was heiszt : NUR FUER DAS EIGENE PB-PROGRAMM?
Keine weitere Verwendung gestattet? :cry:

Funktioniert und richtig beeindruckt bin ich ja von der Idee, die Konstante #PB_Event_CloseWindow durch ihren eigentlichen Wert zu ersetzten :D

>>
Vorteil davon ist, dass man Hilfetexte nur einmal im Speicher braucht und nur einmal zuweisen muss.

Wie oben beschrieben kann man nun folgendes machen:

[ 1 ] [ 2 ] [ 3 ]

[ X ] [ Y ] [ Z ]

[ a ] [ b ] [ c ]


Der Nutzer hat eine Wahl aus jeder Reihe einen Knopf zu drücken.
Jeder Knopf hat einen Tooltipp, der die Sache genauer beschreibt.
Sagen wir es sind Zeichenwerkzeuge oder sowas.
Meine Gadgets brauchen nur eine Nummer zur Überprüfung.

Ich kann nun aber in der Statusleiste zum Beispiel folgendes schreiben:

Werkzeug "1" mit Option "X" in der Farbe "a"

Meine Gadgets sind ImageGadgets, die selbst keinen Text haben.



Eine Frage noch! Muss ich einen Button neu erstellen, wenn ich seinen ToolTip ändern möchte? Denn GadgetToolTip kann man nur einmal setzen.

Code: Alles auswählen

hwnd = OpenWindow(0,0,0,300,300,"") 

CreateGadgetList(hwnd) 
  
If ButtonGadget(0,10,10,100,24,"") 
  GadgetToolTip(0,"ToolTip") 
  GadgetToolTip(0,"Tool Klops")
EndIf 
  
Debug GetToolTipText(0) 
  
Debug #PB_Event_CloseWindow

i.l=0

Repeat 
  Event = WaitWindowEvent() 
  Debug GetToolTipText(0)  
  i+1
  GadgetToolTip(0,"Tool Klops "+Str(i))  
  
Until Event = 16
Die Procedure von edel ist wirklich edel.
Was ich nur nicht begreife, hat aber nichts mit der Get... Procedure zu tun, sondern mit der Anzeige.
Nach dem ersten Aufruf von (Set) GadgetToolTip ... wird mein ToolTip angezeigt, wenn ich mit der Maus auf'm Knobb bin.
Aber erneutes Aufrufen, lässt keinen ToolTip mehr erscheinen.

Obwohl edels "Funktion" ja den richtigen Wert wieder gibt.

>> würde es ja auf PB 4.02 schieben. Als Bug sehen.
Oder wie auch immer man das bezeichnet.
Vielleicht gibt es ja demnächst da offiziell eine GetFunktion und der Fehler ist behoben, was das erneute setzen angeht.

Genauso wäre zu Überlegen, ob man diese BalloonHilfe nicht mit ins Prozeduren-arsenal nimmt.

Hab auch Gerüchte gehört, dass man keine Strukturen einer Variable übergeben kann :shock:

Dank an edel und alle, die mich verstanden haben
Dank an #NULL, an Kiffi, an Macros und alle die sonst noch ein Kind von mir wollen :allright:

Könnt ja gern auch mal was zu meinem LevelEditor für FolkisA schreiben.
Denn dafür war das eigentlich gedacht.
Dass angezeigt werden kann, ob man Schere oder Stift benutzt und mit welchem Pinsel.

Problem nur, wenn man im HauptBild ist, wo dann steht:

ToolTip: 1. Malen, 2. Pinpette, 2x1. Rechteck

Sollte dann immer stehen:

Maustaste Nr. 1 : Löschen (Wenn Radierer)

Maustaste Nr. 1: Malen mit Mauer ...
Maustaste DoppelKlick : Rechteck aus 'Mauer' zeichnen

... aber genau das geht noch nicht so einfach, auch wenn ich Dank edel, den ich bei dieser Gelegenheit hier noch einmal lobend erwähnen möchte, nun ein GetGadgetTooltip hab.

Geht immer noch nicht der (Set)GadgettoolTip, wenn ich ihn erneut aufrufe. (was bei SetGadgetText ja geht)

Vielleicht weiß ja wer was. :allright:

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

@Macros, sowas brauch ich auch noch, oder würde es gern erfahren.
wie bekomme ich von anderen Anwendungen genaue Angaben zu den vorhandenen Knöpfen und deren ToolTips.

Hatte das hier schon mal geschrieben:
http://www.purebasic.fr/german/viewtopi ... highlight=

Leider keine Antworten. Vielleicht hab ich wieder einen zu langen Roman geschrieben. :oops:

Eine Liste aller sichtbaren Fenster und deren drückbaren Knöbb'n.
Muss doch gehen :roll: :allright:
Zuletzt geändert von Xaby am 04.01.2007 03:03, insgesamt 2-mal geändert.
Kinder an die Macht http://scratch.mit.edu/
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag von HeX0R »

[OT rein interessehalber]
@edel:
Du lebst ausserhalb Deutschlands, oder verwendest eine Nicht-Deutsche-Tastatur ?
(Weil ich bei dir immer die umgewandelten Umlaute sehe...)
[/OT]
Antworten