Seite 1 von 1

Titelbezeichnung [ERLEDIGT]

Verfasst: Do, 12. Jan 2006 17:24
von Manfred
Hi,

ich bins nur.

Gibt es eine Möglichkeit im reinen Textmodus oben die Titelleiste vom Inhaltstext her zu verändern? Normalerweise steht dort der Programmname drin. Unter gemischt und GUI habe ich es gefunden, aber für Text nicht. Dann müßte doch auch in der Taskleiste unten der neue Name erscheinen?

Irgendwie finde ich nichts darüber.

Verfasst: Do, 12. Jan 2006 20:04
von Tom
Hallo, Manfred.

Ich arbeite von Anfang an nur im GUI-Modus, habe also null (0) Erfahrungen im Textmodus, aber den Docs meine ich zu entnehmen, daß ein manipulierbares Fensterobjekt (Klasse: XbpCrt) erst im Hybridmodus zur Verfügung steht. Insofern meine ich, daß Dir Slots/Instanzen wie :Title im Textmodus nicht zur Verfügung stehen. Kann aber sein, daß ich falsch liege. Olaf (Benutzername: Olaf870) dürfte derjenige unter uns sein, der die meisten Erfahrungen mit Text- und Hybridmodus hat. Schreib ihm doch mal 'ne PN (Mitgliederliste -> neben "Olaf870" auf "pn" für "private Nachricht klicken) - und laß uns wissen, was er gesagt hat.

Verfasst: Do, 12. Jan 2006 20:15
von Manfred
Hallo Tom,
:setTitle() das war es was mir nicht mehr einfiel. Ich habe die ganze Zeit nach Title oder so gesucht.

Jetzt weiß ich aber eher, wie ich es machen kann. Diese Lösung hatte ich schon woanders eingebaut. Allerdings bin ich mir jetzt nicht sicher ob das schon der Hybridmodus ist. Ich habe eine reine Textoberfläche und binde aber schon direkt GUI Elemente ein. Sieht nicht wie der Hybridmodus aus. Egal, Hauptsache ich weiß jetzt wieder wo ich nachsehen muß.

Danke erstmal.

Verfasst: Do, 12. Jan 2006 20:28
von Tom
Hallo, Manfred.

:title ist die Instanzvariable eines XbpCrt-Fensters, und wenn Deine Anwendung GUI-Elemente (Xbase-Parts) enthält, muß dieses Objekt zur Verfügung stehen und manipulierbar sein (oXbp:title := "Mein Fenster"). Alternativ bzw. zusätzlich müßte die :SetTitle-Methode funzen (oXbp:SetTitle("Mein Fenster")). Sischa bin isch nisch, wejen Guj only. :D

Verfasst: Do, 12. Jan 2006 20:34
von Manfred
Hi Tom,

nee, alles klar. Ich habe jetzt eine Clipper Anwenung in der Umbauphase. Vorhin sprach ich von einer Anwendung, die ich im Textmodus neu programmiert hatte, aber alle Meldungen und Browserfenster im GUI Modus habe, für den Fall, dass das PRG doch noch auf GUI kommt, bzw. für die anderen Programme, die es auch benutzen. Da war :SetTitle() schon drin. Ich habe es nur nicht gefunden, weil ich eben auf GUI Ebene noch nicht viel gemacht habe (eigentlich noch nix :-( ) und deshalb die HD im Kopf auf "unbenutzte Daten komprimieren und wegspeichern" ging :-)

Verfasst: Mo, 16. Jan 2006 15:24
von Manfred
Ich habe es gefunden, wie ich es gemacht habe. Jetzt taucht aber ein neues Problem auf: Kann ich die windowseigenen Icons einbinden? Z.B. die, die man sich als Verknüpfungsicon aussucht? Ich habe bisher nur gefunden, wie man *.ico einbindet. Unter Anderes Symbol bei der Verknüpfung steht ja, dass die Windowsicons in der shell32.dll stehen? Komme ich da irgendwie dran. Ist mal wieder ein Buch mit 7 Siegeln für mich. :roll:

Verfasst: Mo, 16. Jan 2006 15:56
von Tom
Hallo, Manfred.

Dafür mußt Du meiner Meinung nach die Icons aus der DLL extrahieren und in Deine Ressourcen einbinden (das geht übrigens mit jeglicher Software, nicht nur mit SHELL32.DLL - auch die Icons z.B. Deines Browsers sind aus der EXE bzw. seinen DLLs extrahierbar). Für derlei gibt es Tools, z.B. "Icons Control" von Chris Doan (ich weiß allerdings nicht, ob das noch existiert - das habe ich vor fünf oder sechs Jahren mal benutzt).

Schau mal beispielsweise hier (keine Gewähr - ich kenne dieses Tool nicht):

http://www.suedwest-pc.de/becyicongrabb ... -3725.html

Verfasst: Mo, 16. Jan 2006 19:33
von Josef
Ich hab die APPSYS geändert. Vielleicht ein Vorschlag.

PROCEDURE AppSys
LOCAL oXbp,asize,apos[2],oDlg,oStatic,oPs,oBmp,oHlp

// GrӇe vom DeskTop feststellen
// um Anwendungsfenster zu zentrieren
aSize := SetAppWindow():currentSize()
apos[1] := 7
apos[2] := 40

oDlg := SetAppWindow()
*oHlp := XbpHelpLabel():new():create()
// Anwendungsfenster erzeugen (application window)

oDlg := XbpCrt():new(appdesktop(),,apos,44,87,"Programmtitel oder Name")
oDlg:border := XBPDLG_DLGBORDER
oDlg:useshortcuts := .T.
oDlg:helplink := oHlp
oDlg:taskList := .T.
oDlg:fontHeight := 16
oDlg:fontWidth := 8
oDlg:close := {|| appquit() }
oDlg:icon := 111
oDlg:create()

oDlg:show()
SetAppWindow( oDlg )
SetAppFocus ( oDlg )
clear screen

Verfasst: Mo, 16. Jan 2006 20:55
von Manfred
Nachdem ich nun ein wenig herumprobiert und -gelesen habe, scheint sich zu bestätigen: Das Icon kann wohl nicht nachträglich geändert werden?

Verfasst: Mo, 16. Jan 2006 21:27
von Tom
Hallo, Manfred.
Das Icon kann wohl nicht nachträglich geändert werden?
:?:

1. Man kann .ICO-Dateien bearbeiten, benötigt nur ein entsprechendes Tool. Viele Grafikprogramme beherrschen das .ICO-Format.

2. Wenn Du den Ressourcen-Linker (ARC) abermals laufen läßt, wird die Ressource (in diesem Fall das Icon) neu eingebunden. Um das zu forcieren, kannst Du auch die Ressourcen-Datei (.RES) löschen.

Oder verstehe ich Dich jetzt falsch?

Verfasst: Mo, 16. Jan 2006 21:33
von Manfred
Hi Tom,

nein, Du verstehst mich schon richtig, aber ich bin mal wieder zu doof vernünftig zu fragen. :roll: Nachdem ich meinen Text nochmals gelesen hatte, hätte ich genauso geantwortet.

Ich meinte natürlich die Var :icon kann man nachträglich nach dem :create() nicht mehr ändern, so wie :settitle().

tsetsetsetse, das Alter, das Alter.

Verfasst: Mo, 16. Jan 2006 21:45
von Tom

Code: Alles auswählen

oDlg:icon := NEUES_ICON
oDlg:Configure()

Verfasst: Mo, 16. Jan 2006 21:47
von Manfred
Das war meine 1.Idee.

Hat aber nicht geklappt.

Verfasst: Mo, 16. Jan 2006 21:49
von Tom
Hallo, Manfred.

Das muß dann andere Gründe haben. Auf diese Art kann man nachträglich alles mögliche ändern (z.B. auch den Rand). Bei mir funktioniert das problemlos. Codesnippet?

Verfasst: Mo, 16. Jan 2006 22:05
von Manfred
Hm,

mal sehen wie ich das hinbekomme....

Code: Alles auswählen

METHOD bildschirm:hauptmenue
       LOCAL oWindow   := SETAPPWINDOW()         

       MEMVAR oSysPara

       oWindow:settitle(oSysPara:cProgrammName) //das klappt hier
       oWindow:icon := oSysPara:nIcon 
       oWindow:configure()                    // das nutzt nichts.
return self

#include "..\include\amazon.ch"

PROCEDURE main()
                   PRIVATE oBild    := bildschirm():new()
          oSysPara:cProgrammName := "amazon"
          oSysPara:nIcon := ICON_APPLICATION
          oBild:hauptmenue()

return
genügt das?

Wobei ich allerdings gerne wissen möchte, wie kann man herausfinden, ob das Icon nun wirklich eingebunden wurde? Vielleicht kann das PRG es ja gar nicht finden?

Verfasst: Mo, 16. Jan 2006 22:11
von Manfred
ich muß hier nochmal unterbrechen.

irgendwas ist schief gelaufen. Die *.arc Datei war vorhin aus dem Projekt. Jetzt habe ich sie wieder eingebunden und der Compiler beschwert sich, es fehle die .res Datei.

egal, ich mache Schluß für heute.

Morgen werde ich mir das noch einmal in aller Ruhe anschauen.

Verfasst: Di, 17. Jan 2006 8:31
von Manfred
Moin, moin,

mea culpa, es klappt alles. Zuerst habe ich einmal alles in 1 Verzeichnis kopiert und dann nochmals alles gaaanz langsam compiliert. Und siehe da, es läuft.

Anscheinend habe ich irgendwo bei der .ch.arc usw. Angabe irgendwie falsche Pfade o.Ä. angegeben.

So, jetzt wird es langsam aber sicher zerpflückt und in die Verzeichnisse gepackt, in die es soll. Mal sehen, wo der Wurm lag.