XbpTabPage mit owner-drawing

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Antworten
Benutzeravatar
ssemleit
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 123
Registriert: Di, 08. Mär 2016 11:32
Hat sich bedankt: 19 Mal
Danksagung erhalten: 8 Mal

XbpTabPage mit owner-drawing

Beitrag von ssemleit »

Hallo,

hat schon jemand mal XbpTabPage mit owner-drawing umgesetzt und vieleicht ein exemplarisches Beispiel?
Ich tappe da noch etwas im dunkeln, was die Möglichkeiten betrifft.

Ich würde gerne von den alten klassischen Tabs auf "morderne" Elemente wechseln.
Mit 5 Tabs (Überschrift, Umgang mit dem Datenschutz, Meinungen, Support, Ähnliche) sollte dass dann z.B. so aussehen:
Tab-Reiter.JPG
Tab-Reiter.JPG (13.37 KiB) 2926 mal betrachtet
Darunter dann jeweils die anderen XBase-Parts.

Ist das überhaupt mit dem Owner-Drawing der TabPage möglich?


Besten Dank
Stefan
Gruß
Stefan
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: XbpTabPage mit owner-drawing

Beitrag von Tom »

Hallo, Stefan.

Ja, ich mache Ownerdrawing mit Tabpages, für formatierte Schriften, für farbige Hintergründe und für Icons. Ich habe das vom XbpImageTabPage-Sample von Alaska abgeleitet. Das Ownerdrawing funktioniert aber genauso wie bei Statics oder Browse-Zellen. Man bekommt ein Array aus 4 Elementen, davon beschreibt das letzte das Rechteck, auf dem man zeichnen darf. Und dann malt man halt mit GRA-Funktionen auf der Lasche der Tabpage. Leider verfügen die GRA-Funktionen nicht über Antialiasing, so dass Kreise oder Kreisabschnitte unsauber aussehen. Aber ansonsten kann man da halt alles tun - Texte schreiben, Icons oder Bildchen anzeigen, und eben zeichnen. Allerdings ist die Lasche trotzdem sichtbar.

Für das Beispiel, das Du zeigst, würde ich anders vorgehen, nämlich - auf einem Static basierend - ein eigenes kleines Control bauen. Und je nachdem, wo hingeklickt wird, blendet man darunter dann das Static mit dem Inhalt ein oder aus.
Herzlich,
Tom
Benutzeravatar
ssemleit
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 123
Registriert: Di, 08. Mär 2016 11:32
Hat sich bedankt: 19 Mal
Danksagung erhalten: 8 Mal

Re: XbpTabPage mit owner-drawing

Beitrag von ssemleit »

Hallo Tom,

danke für Deine Hinweise.
Ich habe schon befürchtet, dass es per Ownerdraw nur begrenzte Möglichkeiten gibt.

Mein Ziel ist es, unsere bestehenden Applikationen etwas "aufzuhübschen".
Das sind unzählige Seitendialge, bei denen die bestehende Logik und die Anordnung der Elemete auf den einzelnen Seiten behalten werden muss.
Ich habe nach dem von Dir erwähnten XbpImageTabPage-Sample gesucht, aber nichts gefunden.
Hast Du einen Tip, wo das zu finden ist?

Beste Grüße
Stefan
Gruß
Stefan
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: XbpTabPage mit owner-drawing

Beitrag von Tom »

Hast Du einen Tip, wo das zu finden ist?
Jo. Das ist bei den Assets (...\Documents\Xbase++\.assets) und dort im parts-pack-no1.1.
Herzlich,
Tom
Benutzeravatar
ssemleit
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 123
Registriert: Di, 08. Mär 2016 11:32
Hat sich bedankt: 19 Mal
Danksagung erhalten: 8 Mal

Re: XbpTabPage mit owner-drawing

Beitrag von ssemleit »

Aha! Da ist das Ding :D

Danke uns schönes WE.
Gruß
Stefan
Benutzeravatar
ssemleit
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 123
Registriert: Di, 08. Mär 2016 11:32
Hat sich bedankt: 19 Mal
Danksagung erhalten: 8 Mal

Re: XbpTabPage mit owner-drawing

Beitrag von ssemleit »

Die XbpImageTabPage funktioniert nun soweit ganz gut.

Hat denn schon jemand mit XbpTabPage:DrawMode := XBP_DRAW_OWNERADVANCED Erfahung gesammelt?

Die XbpTabPage:draw() mit aInfo[XBP_DRAWINFO_ACTION] == XBP_DRAWACTION_DRAWBG wird brutal oft
und auch auch immer mit den gleichen Parametern gerufen.
Zudem gibt es massive Darstellungsprobleme auf der Tab selbst.
Kann auch sein, dass es an unseren zahlreichen Anpassungen im Bereich der Dialoge liegt.
Setzt XBP_DRAW_OWNERADVANCED jemand von Euch mit Tabpages ein?


Schönes WE
Stefan
Gruß
Stefan
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: XbpTabPage mit owner-drawing

Beitrag von Tom »

Hallo, Stefan.

Wozu sollte man XbpTabpages mit OWNERDRAWADVANCED nutzen? Dann muss man die komplette Tabpage selbst zeichnen. Sinnvoll ist das m.E. nur bei der "Lasche" (DrawMode OWNERDRAW). Oder was hast Du da vor? Zeig doch mal!

Jedenfalls dürfte dann sehr häufig das Ownerdrawing aufgerufen werden, auch bei indirekten Abhängigkeiten.

Ich prüfe in meiner Zeichnen-Routine, welchen Status die Tabpage hat. Wenn sie disabled ist, geschieht nichts (ggf. von einem Neuzeichnen des Laschen-Textes abgesehen). Das wird über

Code: Alles auswählen

IF !BAnd(aInfo[XBP_DRAWINFO_STATE],XBP_DRAWSTATE_DISABLED) == XBP_DRAWSTATE_DISABLED 
  * ZEICHNEN
ENDIF
abgefangen.

(Edit: Typo im Code korrigiert.)
Zuletzt geändert von Tom am Fr, 08. Apr 2022 16:15, insgesamt 1-mal geändert.
Herzlich,
Tom
Benutzeravatar
ssemleit
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 123
Registriert: Di, 08. Mär 2016 11:32
Hat sich bedankt: 19 Mal
Danksagung erhalten: 8 Mal

Re: XbpTabPage mit owner-drawing

Beitrag von ssemleit »

Hallo Tom,

genau. Mit OWNERDRAWADVANCED wollte ich die Möglichkeiten sondieren, die Lasche moderner zu zeichnen um das ganze etwas zeitgemäßer aussehen zu lassen. Würde wohl auch gehen, aber ohne das Antialiasing sehen die größere Rundungen eh antik und noch altbackener aus.
Tab-Reiter2.JPG
Tab-Reiter2.JPG (16.38 KiB) 2518 mal betrachtet
Ich werde und unser Marketing werden uns wohl mit der XbpImageTabPage zufrienden geben müssen und das OWNERDRAWADVANCED verwerfen.

Eins schwirrt mir doch noch im Kopf rum...
Wenn ich ::tabHeight aller Tabs auf 0 setze, dann verschwinden alle Tabs.
Darüber könnte ich dann ein HtmlWindow mit "schönen" Schaltflächen für die Seitenumschaltung setzen.
Einen Versuch wert oder Zeitverschwendung?

Gruß
Stefan
Gruß
Stefan
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: XbpTabPage mit owner-drawing

Beitrag von Tom »

Hallo, Stefan.

Verstehe. Ja, wenn wenigstens GDI+ ginge. Ich mache sehr viel mit Ownerdrawing und ärgere mich seit Jahren darüber, keine wirklich runden Kreise zu bekommen. Aber die WebUI geht ja in die nächste Runde - vielleicht kommt da was. :wink:
Herzlich,
Tom
Benutzeravatar
ssemleit
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 123
Registriert: Di, 08. Mär 2016 11:32
Hat sich bedankt: 19 Mal
Danksagung erhalten: 8 Mal

Re: XbpTabPage mit owner-drawing

Beitrag von ssemleit »

Hallo Tom,

dann hoffen wir mal, dass es mit der WebUI voran geht und Alaska zeitnah etwas hübsches bereitstellen kann,

Grüße
Stefan
Gruß
Stefan
Antworten