MLEartiges Objekt für Chats

Konzeptionelles, Technisches, Termine, Fragen zum Hersteller usw.

Moderator: Moderatoren

Antworten
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

MLEartiges Objekt für Chats

Beitrag von Benz »

Hallo,

Ich habe noch wenig Erfahrung damit Objekte so anzupassen, dass Sie sich anders verhalten als die Standardobjekte von Windows/Xbase++ (SLE,MLE, RadioButton, etc.). Generell würde ich gerne wissen wie denn das Vorgehen ist, wenn ich
eigene Objekte machen möchte und diese von anderen Objekten ableite.
Zum Beispiel würde ich gerne ein Objekt machen, das ähnlich wie ein ListObjekt oder ein MLE aussieht. Dabei soll ein Chatverlauf angezeigt werden. Also ich schreibe meinem Gegenüber dieser Antwort. Das was das Objekt dann machen soll ist einfach, dass es zb den Text des Senders links anzeigt mitsamt Datum Uhrzeit Profilbild und Nachricht anzeigt, dasselbe auf der rechten Seite, nur eben für den Text, den der Empfänger geschrieben hat.

Wo könnte ich da denn ansetzen? Wie kann ich das Verhalten eines Objektes so ändern bzw. die Anzeige eines Objektes so oder so ähnlcih gestalten?
Ich weiß, dass ich das dann von der jeweiligen Klasse ableiten muss, aber wie genau funktioniert das dann letztendlich, wie kann ich die Zeichnugn des Objektes ändern usw?

Viele Grüße
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: MLEartiges Objekt für Chats

Beitrag von Tom »

Mach doch mal eine Zeichnung davon, wie das aussehen soll. Oder einen Screenshot von einem ähnlichen Control, das Du irgendwo gesehen hast.

Man kann vieles machen, zum Beispiel auch ein simples Textstatic so aufbohren, dass es dazu in der Lage wäre, aber mit großem Aufwand. Die WebUI der 2.0 hat möglicherweise die nötigen Kapazitäten. Oder man nimmt eine vorhandene Komponente aus irgendeiner 3rd-Party-Bibliothek und verwendet einfach diese.
Herzlich,
Tom
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: MLEartiges Objekt für Chats

Beitrag von brandelh »

Abgeleitete Klassen für SLE etc. hab ich in der Wissensbasis hinterlegt

:arrow: http://www.xbaseforum.de/viewtopic.php?f=16&t=499

Beim Chat wird normal eine Kombination aus SLE und MLE verwendet, im SLE wird eingegeben, dieser Text landet dann im MLE am ende oder Anfang, Rest wird verschoben.
Wenn man Farbe oder unterschiedliche Ausrichtungen will, muss man wohl selbst ein Statik bauen und mit GraStringAt() malen.

Ich meine Xbase++ hätte in der ASINET ein einfaches Beispiel mit Fokus auf Textnachrichtenübermittlung.
Gruß
Hubert
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

Re: MLEartiges Objekt für Chats

Beitrag von Benz »

Im Prinzip würde das so oder so ähnlich aussehen wie in ICQ (s. Bild im Anhang). Nur dass Smilies nicht unbedingt sein müssen und ich würde gerne, anders als auf dem Bild, die Texte die "Tester" schreibt rechtsbündig anzeigen, das von dem Benutzer mit den kyrillischen Schriftzeichen auf dem Bild wäre dann auf der linken Seite (oder andersherum, ist ja egal) und ich würde zusätzlich gerne das Profilbild des Users anzeigen lassen pro Texteintrag (facebook macht das ähnlich in seinem Chat).
Und ja, ich würde das gerne auch so ähnlich machen, dass unten eben das SLE steht oder auch ein MLE sowie ein Sendenbutton. Sobald dieser gedrückt wurde soll der Text in das obere MLE Oder was auch immer eingetragen werden, dass man eben den Chatverlauf aktualisiert.
Dateianhänge
ICQ_1.png
ICQ_1.png (112.96 KiB) 10796 mal betrachtet
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: MLEartiges Objekt für Chats

Beitrag von brandelh »

das in der Mitte ist eine Listbox, die kümmert sich dann auch ums rollen
Gruß
Hubert
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: MLEartiges Objekt für Chats

Beitrag von Tom »

Ja, Listbox. Mit Ownerdrawing (darin kann man dann auch über :MeasureItem variable Zeilenhöhen implementieren) oder über die WebUI, dann wäre es sehr wenig Code. Falls die das schon kann. Kann sie? :wink:
Herzlich,
Tom
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: MLEartiges Objekt für Chats

Beitrag von Jan »

In den Konferenzunterlagen von Alaska gibt es ein paar Samples für Listboxen mit WebUI. Da geht schon eine ganze Menge. Ob sowas auch müßte man einfach mal testen. Ohne HTML- und CSS-Kenntnisse wird das aber nicht abgehen.

Alaska hat ja auch gerade erst angekündigt, das in unbestimmter Zeit mit einer unbestimmten Anzahl von Updates mehr als 20 XbpParts auf Basis der WebUI erscheinen werden. Da müsste man dann mal schauen, was die da alles anbieten. Und ob der Code dazu mitgegeben wird - logisch wäre das, wurde ja auch früher schon mit XbParts auf Basis von Xbase++-Code gemacht. Und XbParts der WebUI sind grundsätzlich immer in Xbase++-Code geschrieben, setze ich voraus.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

Re: MLEartiges Objekt für Chats

Beitrag von Benz »

Verstehe ich das richtig, dass die WebUI im Prinzip ein Xbasepart für ganz normale GUI Programme ist, die aber in sich durch HTML und CSS aufgebaut wird? (ich bin bei v1.9 aber das wäre ja super).
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

Re: MLEartiges Objekt für Chats

Beitrag von Benz »

UNd wenn ich da ne Listbox verwende, kann ich dann auch neben Text in der einen Zeile ein Bild einfügen? Und kann ich auch innerhalb von einer Zeile in der Listbox mehrere verschieden formatierte Texte haben? also zb den Namen des Benutzers fett und die Nachricht normal formatiert. Geht auch die Rechtsbündigkeit in Listboxen? Oder hätte jemand eine Idee wie man das realisieren könnte?
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: MLEartiges Objekt für Chats

Beitrag von Tom »

Du kannst in der Listbox machen, was Du willst, wenn Du mit Ownerdrawing arbeitest. Du musst es dann aber auch alles selbst tun. Also Texte formatieren, platzieren, Farben extrahieren, Bilder hinzufügen (Smileys dürften ein großer Spaß werden), benötigten Platz ermitteln, weiß der Geier was. Das jeweilige Element (der MicroPS) ist ein leeres Blatt, auf dem Du malst, in der Zeichnen-Methode. Die beiden Hautprobleme bestehen darin, a) die Daten so zu reichen, dass die Methode alles weiß, was sie wissen muss und b) mit GRA-Funktionen und ähnlichem dann eben zu zeichnen.

Dafür muss man "nur" der Listbox das Ownerdrawing-Merkmal verpassen und eben eine Draw-Methode schreiben.

Einfacher ginge das tatsächlich mit der WebUI. Da formatiert man - auf Datenebene - letztlich nur HTML und überlässt den Rest dem Objekt bzw. der Klasse. Mit HTLM/CSS kannst Du formatieren, Elemente mischen, Farben beliebig verwenden und vieles mehr. Programmiert werden muss dann nur noch die Zusammenstellung des HTML-Fragments.
Herzlich,
Tom
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: MLEartiges Objekt für Chats

Beitrag von AUGE_OHR »

Benz hat geschrieben:Verstehe ich das richtig, dass die WebUI im Prinzip ein Xbasepart für ganz normale GUI Programme ist, die aber in sich durch HTML und CSS aufgebaut wird? (ich bin bei v1.9 aber das wäre ja super).
jedes Control muss "gemalt" (render) werden.
beim WebUI Interface verwendet Alaska HTML-Layout zu rendern ... thats all.
http://www.terrainformatica.com/htmlayout/

die CLASS XbpColorListbox findest du im Ownerdraw Beispiel c:\ALASKA\XPPW32\SOURCE\samples\basics\OWNERDRW\
statt einer GRAbox() würde man ein Bitmap setzten.

Frage : was hat die Listbox mit den MLE zu tun bzw. wo ist da dein Problem ?
gruss by OHR
Jimmy
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: MLEartiges Objekt für Chats

Beitrag von Jan »

Das hier ist aus einem der Alaska-Samples in Frankfurt vergangenes Jahr:
Slidinglist.jpg
Slidinglist.jpg (75.88 KiB) 10767 mal betrachtet
Also verschiedene Schriften, Farben, Bilder, alles dabei.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

Re: MLEartiges Objekt für Chats

Beitrag von Benz »

AUGE_OHR hat geschrieben:Frage : was hat die Listbox mit den MLE zu tun bzw. wo ist da dein Problem ?
Es ging lediglich darum ein Objekt zu finden, das recht gut dafür passt einen Chatverlauf anzuzeigen, ob das jetzt ein MLE oder eine Listbox ist, macht für mich keinen Unterschied. :)
Jan hat geschrieben:Das hier ist aus einem der Alaska-Samples in Frankfurt vergangenes Jahr:
Das sieht ja echt nicht schlecht aus, ich denke dann werde ich meinem Chef empfehlen so langsam aber sicher eine neue Compilerversion zu kaufen.

Recht herzlichen Dank euch allen! Ich denke mit OwnerDraw muss ich mich wohl auch noch etwas auseinandersetzen und dann mit der WebUI, dank den regen Beiträgen habe ich da jetzt richtig Lust darauf bekommen! :D
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

Re: MLEartiges Objekt für Chats

Beitrag von Benz »

Jan hat geschrieben:Das hier ist aus einem der Alaska-Samples in Frankfurt vergangenes Jahr:
Slidinglist.jpg
Also verschiedene Schriften, Farben, Bilder, alles dabei.

Jan
Hast du zufällig den Code für das Beispiel, das wäre genau das richtige! :)
AUGE_OHR hat geschrieben: die CLASS XbpColorListbox findest du im Ownerdraw Beispiel c:\ALASKA\XPPW32\SOURCE\samples\basics\OWNERDRW\
Ich versteh das Beispiel nicht so ganz, mein Hauptproblem ist:

- wo werden die in colorbox.prg overloaded Methoden XbpColorListbox:MeasureItem und XbpColorListbox:DrawItem( mp1, mp2 ) aufgerufen? Ich sehe den Aufruf zumindest in diesem Programmcode nicht der im Beispiel mitgeliefert wurde.
- kann ich irgendwie die von Xbase++ gegebenen MEthoden zb der Klasse XbpListbox einsehen?
- Woher weiß ich denn welche Methoden ich überschreiben muss?

Viele Grüße
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: MLEartiges Objekt für Chats

Beitrag von Jan »

Moin,

bei der aktuellen 2.0 ist das jetzt als Beispiel mit dabei unter [benutzer]\Documents\Xbase++\source\samples\webui\xbphtmlwindow

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: MLEartiges Objekt für Chats

Beitrag von AUGE_OHR »

Benz hat geschrieben:
AUGE_OHR hat geschrieben: die CLASS XbpColorListbox findest du im Ownerdraw Beispiel c:\ALASKA\XPPW32\SOURCE\samples\basics\OWNERDRW\
Ich versteh das Beispiel nicht so ganz, mein Hauptproblem ist:

- wo werden die in colorbox.prg overloaded Methoden XbpColorListbox:MeasureItem und XbpColorListbox:DrawItem( mp1, mp2 ) aufgerufen? Ich sehe den Aufruf zumindest in diesem Programmcode nicht der im Beispiel mitgeliefert wurde.
die beiden Methoden sind "in" der Class enthalten und überschreiben die Windows Methoden
Benz hat geschrieben:- kann ich irgendwie die von Xbase++ gegebenen MEthoden zb der Klasse XbpListbox einsehen?
wie schon gesagt sind die Methoden "in" der Class XbpColorListbox

! Note : oMbar:measureItem / oMbar:drawItem beziehen sich auf Ownerdraw Menu "only" !
Benz hat geschrieben:- Woher weiß ich denn welche Methoden ich überschreiben muss?
für Ownerdraw gibt es nur die beiden Methoden / Structuren.
gruss by OHR
Jimmy
Antworten