Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: GEOS-InfoBase-Forum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

Samstag, 13. Januar 2018, 17:21

GI_visMoniker in GenInteractionClass

Ist es nicht möglich, einen GString als Moniker in einem GenInteraction-Objekt zu verwenden? Die Titelzeile bleibt einfach leer.

GI_visMoniker={
size = tiny;
color = color4; //gray1 usw. probiert
aspectRatio = normal;
cachedSize = 30,10;
gstring {
GSSaveTransform(),
GSSetTextColorIndex(0),
GSSetFont(FID_UNIVERSITY,10),
GSDrawText(0,0),"Hallo",
GSRestoreTransform(),
GSEndString()
}
}
In der Menüzeile, von der aus das Objekt aufgerufen wird, erscheint der Text.

Wilfried

2

Sonntag, 14. Januar 2018, 12:40

Doch, geht, hab ich vor Jahrzehnten schon mal gemacht.
Versuch mal
size=standard;

Außerdem könnte
style = text;
helfen, wobei ich jetzt auf die Schnelle die für style möglichen Werte nicht habe.
Ich hab damals
style = icon;
verwednet.
Der color - Wert ist unkritisch.

Gruß
Rainer
Es gibt 10 Arten von Menschen - die einen wissen was binär ist, die anderen nicht.

3

Sonntag, 14. Januar 2018, 17:37

Ohne Wirkung :(

Wilfried

4

Sonntag, 14. Januar 2018, 18:01

Hm. Jetzt muss man probieren. Versuch mal nur:
GI_visMoniker={
style = icon; /* normaler Moniker */
size = standard; /* Bildschirmaufl”sung: VGA (!) */
color = color4; /* Farbe, 4 Bit */
aspectRatio = normal; /* Verzerrung: keine */
cachedSize = 48,30; /* GrӇe des Monikers */
gstring {
GSDrawText(0,0),"Hallo",
GSEndString()

}

}
Der Header ist von meinem Icon. Ich habe nur Grafikbefehle drin. Und kein GSSaveTransform() am Anfang.

Vielleicht ist
style = icon;
ja der Knackpunkt.

oder statt GSDrawText mal eine Grafikbefehl wie GSFillRect (-20, -20, 100, 100). Negative Koordinaten testweise, damit er in alle Richtungen viel zeichnet.

Außerdem mal einen Button statt einem Interaction probieren.

Gruß
Rainer

NACHTRAG: Bist du sicher dass
GSDrawText(0,0),"Hallo",
richtig ist und nicht
GSDrawText(0,0,"Hallo"),
- Klammerproblem?



PS: Hier der Komplettcode

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#define SCHLOSS_HORIZ_POS 23
@visMoniker ProtAppMoniker = {
	style = icon;  		/* normaler Moniker */
	size = standard;	/* Bildschirmaufl”sung: VGA (!) */
	color = color4;		/* Farbe, 4 Bit */
	aspectRatio = normal;	/* Verzerrung: keine */
	cachedSize = 48,30;	/* GrӇe des Monikers */
   gstring {
  	/* stilisiertes Schloá */
	GSSetAreaColorIndex(C_LIGHT_GRAY),
	GSFillRect(SCHLOSS_HORIZ_POS,4,SCHLOSS_HORIZ_POS+18,27),
	GSSetLineColorIndex(C_BLACK),
	GSDrawVLine(SCHLOSS_HORIZ_POS+3,4,27),
	GSDrawVLine(SCHLOSS_HORIZ_POS+14,4,27),
  	/* Schaft und Bart des Schlssels */
	GSSetAreaColorIndex(C_LIGHT_RED),
	GSFillRect(2,12,30,17),
	GSFillRect(4,17,15,20),
	GSFillRect(4,20,6,23),
	GSFillRect(9,20,13,23),
  	/* Linien zur Auflockerung */
	GSSetLineColorIndex(C_WHITE),
	GSDrawHLine(3,13,30),
	GSSetLineColorIndex(C_BLACK),
	GSDrawHLine(4,17,15),
	GSSetLineColorIndex(C_LIGHT_RED),
	GSDrawVLine(1,13,16),
  	/* 'Ring' ist mangels Qualit„t zum Rechteck mutiert */
	GSSaveTransform(),
	GSSetLineColorIndex(C_LIGHT_RED),
	GSApplyTranslation(29,15),
	GSApplyRotation(45),
	GSSetLineWidth(5),
	GSDrawRect(0,0,10,10),
	GSSetLineColorIndex(C_WHITE),
	GSSetLineWidth(1),
	GSDrawHLine(-1,-1,11),
	GSDrawHLine(0,9,10),
	GSRestoreTransform(),
	GSEndString()
	}
   };
Es gibt 10 Arten von Menschen - die einen wissen was binär ist, die anderen nicht.

5

Montag, 15. Januar 2018, 13:02

Hallo Rainer,

Ich habe stundenlang herumprobiert, auch in anderen Applikationen. Bislang ohne Erfolg.
In welchem deiner Programme hast du es realisiert? Ich würde es gern mal sehen.

Wilfried

6

Montag, 15. Januar 2018, 15:16

Hallo Wilfried,

wenn ich ein bisschen Luft habe schick ich dir mal was zu ;-)

Wobei....
ich habe den Moniker als Icon verwendet, nicht für ein Objekt. Vielleicht muss man da den Moniker auch getrennt deklarieren....


Ansonsten musst du den Vismoniker in einer als data deklarierten Resource vereinbaren und ihm in GEN_PROCESS_OPEN_APPLICATION vor dem @callsuper mit MSG_GEN_REPLACE_VIS_MONIKER an das Objekt senden. Dazu muss es not usable sein.

Hier ein Teil des Codes der "CaptionGString" implementiert. Da geht es.

Quellcode

1
2
3
4
5
6
7
8
9
@call obj::MSG_GEN_REPLACE_VIS_MONIKER(
							VUM_DELAYED_VIA_APP_QUEUE,	/* VisUpdateMode	updateMode, */
							bounds.R_bottom,		/* word 	height, */
							bounds.R_right,			/* word 	width, */
							0,				/* word	length, */
							VMDT_GSTRING,	/* VisMonikerDataType	dataType, */
							VMST_OPTR,		/* VisMonikerSourceType	sourceType, */
							ConstructOptr(mh, ch) );
@call obj::MSG_GEN_SET_USABLE(VUM_NOW);


Gruß
Rainer
Es gibt 10 Arten von Menschen - die einen wissen was binär ist, die anderen nicht.

7

Montag, 15. Januar 2018, 15:42

Also bei mir geht es.

Folgendes sollte auf jeden Fall gehen
1. in einer data-Resource den Vismoniker vereinbaren, mit @visMoniker, siehe Post oben.
2. im UI-Objekt:
GI_visMoniker = list { @ProtAppMoniker };

Gruß
Rainer
Es gibt 10 Arten von Menschen - die einen wissen was binär ist, die anderen nicht.

Thema bewerten