About Window / Requester ?

Für allgemeine Fragen zur Programmierung mit PureBasic.
TWELVE
Beiträge: 72
Registriert: 01.04.2007 18:33

About Window / Requester ?

Beitrag von TWELVE »

Was nehmt ihr, um ein "About" von Eurer Applikation anzuzeigen ?

Bisher habe ich der Einfachheit halber einen MessageRequester verwendet, dieser hat aber zahlreiche Limitationen, z.B.
keine anklickbaren Weblinks und die Formatierung des Textes ( Center) ist zuviel Handarbeit.

Ich habe jetzt ein eigenes Window mit einem TextGadget und zwei HyperlinkGadget gebastelt.Sieht für mich ok aus,
aber ist auch alles viel Gebastel, da ich die zwei HyperlinkGadgets über dem TextGadget manuell so im Text positioniert
habe, das alles paßt.Nur einmal Text geändert und schon ist man wieder am fummeln.

Was mich auch stört: man kann den Text der Weblinks nicht selektieren und kopieren.

Desweiteren habe ich ein kleines ImageGadget ( 40x40) hinzugefügt, um das Programm-Icon mit im About-Fenster anzeigen zu lassen,
das funktioniert aber nicht.Das ImageGadget habe ich wie die zwei Hyperlinks auf/über dem TextGadget platziert ( also über meint
hier die vertikale Ebene/Layer, nicht X/Y), aber es wird einfach nicht angezeigt.Ich nehme an, es wird vom TextGadget überdeckt,
aber die Anzeige im FormDesigner zeigt es so an, dass das ImageGadget in der Ebene über dem TextGadget sitzt.

Hat jemand eine Idee wegen dem ImageGadget und wie baut ihr solche About-Windows/Requester ?

Grüße,

TWELVE
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8679
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: About Window / Requester ?

Beitrag von NicTheQuick »

Ich kann dir schon mal so viel sagen, dass man Gadgets besser nicht über andere Gadgets legt, egal wie die Z-Order eingestellt ist. Windows macht das erfahrungsgemäß nicht korrekt.
Alternativ könnte man aber auch noch ein EditorGadget nehmen und das auf Readonly setzen.
Bild
Benutzeravatar
Bisonte
Beiträge: 2430
Registriert: 01.04.2007 20:18

Re: About Window / Requester ?

Beitrag von Bisonte »

oder einen Rechtsklick abfangen, die Position der Maus mit denen der HyperlinkGadgets vergleichen und ein PopupMenue zeigen in dem man das kopieren anpreist...

Zu dem ImageGadget Z-Order Problem : Standardantwort - CanvasGadget und selbst zeichnen.... Klingt brutaler als es ist ;)
PureBasic 6.10 LTS (Windows x86/x64) | Windows10 Pro x64 | Asus TUF X570 Gaming Plus | R9 5900X | 64GB RAM | GeForce RTX 3080 TI iChill X4 | HAF XF Evo | build by vannicom​​
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: About Window / Requester ?

Beitrag von Kiffi »

auch wenn ich wieder Kloppe kriege: Ich würde ein WebGadget nehmen.

Grüße ... Peter
Hygge
TWELVE
Beiträge: 72
Registriert: 01.04.2007 18:33

Re: About Window / Requester ?

Beitrag von TWELVE »

Sowohl Editor als auch Webgadget sowie auch Canvas hatte ich in meine Überlegungen einbezogen.Dann Editor und Web nach Tests wieder verworfen, weil die Ergebnisse nicht meinen
Anforderungen entsprachen.Das Editor macht kein Center vom Text und ist deutlich abgegrenzt vom Window und für das Webgadget müßte ich erst ein HTML Dokument entwerfen.Mit dem Canvas habe ich keinerlei Erfahrungen.Obwohl Purebasic eine richtig coole Sprache ist, sind manche Dinge irgendwie unwahrscheinlich kompliziert ;-)

Im Prinzip gefällt mir ja mein Window mit Text und Hyperlink Gadget optisch gesehen...aber ich mag es einfach nicht, wenn man bei kleinen Änderungen
im Text das GUI Design mitziehen muß, damit wieder alles zusammenpaßt.Das ist uncool ! Genauso uncool wie ein MessageRequester, bei dem man mit
Leerzeichen den Text solange schieben muß, bis alles paßt.

Macht ihr in Euren Apps keine "About xyz" Anzeigen ? Weil die Antworten bis jetzt sehr vage klingen, also man könnte so oder so machen.
Benutzeravatar
Josh
Beiträge: 1028
Registriert: 04.08.2009 17:24

Re: About Window / Requester ?

Beitrag von Josh »

Meines habe ich direkt auf das Fenster gezeichnet. War damals allerdings ein Versuch, weil ich es einfach mal probieren wollte.

Ich würde an deiner Stelle ein CanvasGadget nehmen, da kannst du drauf malen was du willst und klatscht dann deine Hyperlinkgadgets drauf. Den Text würde ich aus einer Textdatei (manueller Zeilenumbruch) zeilenweise einlesen, die benötigten Pixel in der Höhe immer mitzählen und damit die Höhe deines Fensters automatisch erstellen. Die Textbreite jeder Zeile kannst du berechnen und so auch zentriert ausgeben.

Ist zwar auch nicht der einfachste Weg, aber das machst du ja nur ein mal und kannst es immer wieder verwenden.
Benutzeravatar
Bisonte
Beiträge: 2430
Registriert: 01.04.2007 20:18

Re: About Window / Requester ?

Beitrag von Bisonte »

Zeig doch mal ein Screenshot von deinem About Fenster, auch wenn es missglückt ist. Vielleicht fällt uns da was ein, wie man das spontan besser lösen könnte, damit es dein Gefallen findet ...
PureBasic 6.10 LTS (Windows x86/x64) | Windows10 Pro x64 | Asus TUF X570 Gaming Plus | R9 5900X | 64GB RAM | GeForce RTX 3080 TI iChill X4 | HAF XF Evo | build by vannicom​​
TWELVE
Beiträge: 72
Registriert: 01.04.2007 18:33

Re: About Window / Requester ?

Beitrag von TWELVE »

Ich habe nochmal über die Vorschläge überlegt.

Inwiefern löst ein CanvasGadget meine Probleme mit den Hyperlinks ?

Wenn ich einfach nur Text zeichne, dann kann ich doch auch ein TextGadget nehmen ?
Ok, ich könnte ein Image mit reinzeichnen.Aber die Hyperlinks müßte ich nach wie vor
manuell da drüberlegen.Man soll doch keine Gadgets übereinanderlegen :roll:

Vielleicht ist das WebGadget doch am besten für meine Zwecke geeignet.Da stellt sich
mir die nächste Frage: wie kann man double-quotes ( ") in einem HTML Text "escapen",
sprich in einen Purebasic String einlesen, der selber mit double-quotes terminiert ist ?


Nächste Frage: gibt es eine Methode, um Text in einem EditorGadget zu centern ?

Und dann nochmal die Frage, ob es da nix fertiges gibt ? Scheinbar muß bei PB immer das
Rad neu erfunden werden ? ;-)
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: About Window / Requester ?

Beitrag von RSBasic »

TWELVE hat geschrieben:Ich habe jetzt ein eigenes Window mit einem TextGadget und zwei HyperlinkGadget gebastelt.Sieht für mich ok aus,
aber ist auch alles viel Gebastel, da ich die zwei HyperlinkGadgets über dem TextGadget manuell so im Text positioniert
habe, das alles paßt.Nur einmal Text geändert und schon ist man wieder am fummeln.
Ist für dich WinAPI ein Problem? Wenn nicht, dann kannst z.B. so machen:

Code: Alles auswählen

;Autor: nico
;Nur mit XP-Skin

EnableExplicit

Define EventID
Define LinkHTML$="Text <a href=" + Chr(34) + "http://www.purebasic.fr/german/" + Chr(34) + ">Link</a> Text <a href=" + Chr(34) + "http://www.google.de" + Chr(34) + ">Link</a>"
Define SysLinkHandle

#MAX_LINKID_TEXT = 48
#L_MAX_URL_LENGTH = 2083

Structure LITEM
  mask.l
  iLink.l
  state.l
  stateMask.l
  szID.w[#MAX_LINKID_TEXT]
  szUrl.w[#L_MAX_URL_LENGTH]
EndStructure

Structure NMLINK
  hdr.NMHDR
  item.LITEM
EndStructure

Procedure WindowCallback(hwnd, msg, wparam, lparam)
  Protected result
  Protected *nmhdr.NMHDR
  Protected *LINK.NMLINK

  result = #PB_ProcessPureBasicEvents
  Select msg
    Case #WM_NOTIFY
       *nmhdr.NMHDR = lParam
       Select *nmhdr\code
        Case #NM_CLICK
          *LINK.NMLINK = lParam
          Debug PeekS(@*LINK\item\szUrl[0], -1, #PB_Unicode)
       
      EndSelect
  EndSelect

  ProcedureReturn result
EndProcedure

If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  SysLinkHandle = CreateWindowEx_(0, "SysLink", LinkHTML$, #WS_CHILD | #WS_VISIBLE, 10, 10, 400, 20, WindowID(0), 2, 0, 0)

  SetWindowCallback(@WindowCallback())

  Repeat
    EventID = WaitWindowEvent()
    If EventID = #PB_Event_CloseWindow
      End
    EndIf
  ForEver
EndIf
Dann hast du auch keine Probleme beim Positionieren mehrerer Gadgets hintereinander.
Aber markieren kannst du da nichts.
TWELVE hat geschrieben:Macht ihr in Euren Apps keine "About xyz" Anzeigen ? Weil die Antworten bis jetzt sehr vage klingen, also man könnte so oder so machen.
Ich jedenfalls mache meistens nur ein MessageRequester. Das reicht für mich aus.
TWELVE hat geschrieben:Vielleicht ist das WebGadget doch am besten für meine Zwecke geeignet.Da stellt sich
mir die nächste Frage: wie kann man double-quotes ( ") in einem HTML Text "escapen",
sprich in einen Purebasic String einlesen, der selber mit double-quotes terminiert ist ?
Wenn du Anführungszeichen innerhalb einer HTML-Variable einfügen möchtest, kannst du Chr(34) verwenden.
Ansonsten innerhalb eines Textblocks zwischen zwei HTML-Tags: "
TWELVE hat geschrieben:Nächste Frage: gibt es eine Methode, um Text in einem EditorGadget zu centern ?
Mit oder ohne WinAPI?
Ohne WinAPI ist das glaube ich nicht möglich. Vielleicht irgendwann mal. :D
Mit WinAPI: #ES_CENTER
Oder wenn du nachträglich die Zentrierung aktivieren möchtest: http://www.rsbasic.de/aktualisierung/wi ... trieren.pb
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
TWELVE
Beiträge: 72
Registriert: 01.04.2007 18:33

Re: About Window / Requester ?

Beitrag von TWELVE »

Danke @RSBasic...ich laß Deinen Input erstmal sacken :-)

Hier hab ich zufällig was nettes gefunden:

HyperLinkGadgets automatisch über TextGadgets legen

PB 5.31 bringt aber Fehler beim Compile.
Antworten