| |
|
|
RudiB. |
Hallo zusammen,
kennt jemand diese Erfahrung....?? Habe unter XProfan 11.2 unter Win10 (Auflösung 1366x768) ein Programm geschrieben als .exe erstellt und läuft. Nun habe ich dieses Programm (.exe) auf einem Rechner unter Win7 Enterprise mit höherer Auflösung (1980x1080) laufen lassen. Im Programm feste Werte fürs Fenster (1024x768) und feste Werte für die Elemente. Und siehe da, ich habe massive Darstellungs-Probleme, Habe zwei Screenshots angefügt...findet die Fehler...(hahaha)...nein ernsthaft. z.B bei den Check-Boxen...abgeschnittener Text. Wieso ????.... versteh ich nicht ...man arbeitet doch mit Breite in Pixeln für jedes Element und so sollte das auch entsprechend auf einem fremden Rechner so dargestellt werden..... |
|
|
| Xprofan X4 Rudolf Beske / München
Hardware: NB Intel I9 - 16GByte RAM | 03.02.2020 ▲ |
|
|
|
|
RudiB. | oh....wartet...jetzt hab ich es das erste mal richtig gesehen. Es ist ein Problem mit dem Zeichensatz / Darstellung....aber trotzdem warum?? |
|
|
| |
|
|
|
Georg Teles | Nabend,
mit der Breite der Pixel hat es wenig zutun, sie gibt ja nur die Dimensionen des Feldes der Checkbox / des RadioButtons / des Buttons an.
Kann nicht genau sagen, woran es bei dir liegt, da müsste man in deinen Code reinschauen. Ich vermute, dass es bei der Umrechnung vom Schriftmodus zum Grafikmodus zu solch einem Ergebnis kommt. Wenn man nicht genau die Werte einer Schriftart definiert, wird es auf unterschiedlichen Systemen unterschiedlich umgerechnet.
Um dem aus dem Weg zu gehen, definiere ich in meinen Programmen genau, welcher Font und dessen Format benutzt werden soll:
Hierbei wird jedes Element, was danach erzeugt wird, mit dieser Schriftart versehen - in jedem Windows sieht es dann gleich aus.
Das müsste dein Problem lösen. Alternativ gibt es noch Create("Font, falls Du für bestimmte Elemente nur bestimmte Schriftarten verwenden möchtest - dann müsstest Du aber jedem Element mit SetFont die Schrift zuweisen.
Grüße |
|
|
| |
|
|
|
RGH | Wie Georg richtig festgestellt hat: Damit es überall passt, mit SetDialogFont auch diesen festzurren. Ansonsten wählt Windows den Standard-Font aus, den jeder User anders eingestellt haben kann. Wenn da jemand z.B. bei der Darstellung der Schrift statt 100% etwa 125% oder gar 150% angegeben hat, passt es natürlich nicht mehr.
Gruß Roland |
|
|
| XProfan X4Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 04.02.2020 ▲ |
|
|
|
|
RudiB. | Danke für Eure Antworten.
habe ich so schon gesetzt, jedoch SetDialogFont 1 nur einmal am Anfang des Programms. Werde mal jedes mal hinter UseFont ein SetDialogFont 1 setzen, mal schauen ob das was bringt. |
|
|
| |
|
|
|
Georg Teles | Es genügt grundsätzlich nur 1 Mal dies am Anfang des Programms zu schreiben, alle Fensterobjekte haben dann diese Schriftart.
Wenn du natürlich mehrere Schriftarten verwendest, dann macht es Sinn jeweils vor den Fensterobjekten eine andere Schriftart zu definieren. |
|
|
| |
|
|
|
RudiB. | Problem gelöst, es war einfach nur die Darstellung (im fremden System) der Schriftart im System auf 125% eingestellt.
Vielen Dank |
|
|
| |
|
|
|
RudiB. | Hab ein kleines Problem wo ich nicht mehr weiter komme. Nach einem CLS verschwinden zwei Dialog-Elemente (Edit-Feld + 1 Button"save") wenn man mit der Maus drüberfährt, dann erscheinen sie wieder. Nach dem nächsten CLS sind sie wieder weg... Aber eben nur die zwei....ich versteh die Welt nicht mehr.... Was läuft da schief, welchen Fehler sehe ich nicht....
$P+
SET("ERRORLEVEL",0)
$H LIB\Windows.ph
DEF GETSYSCOLOR(1) !"USER32","GetSysColor"
Declare DE&,Text&,Vokabel$
WINDOWSTYLE 15'512
WindowTitle " Test"
WINDOW (%maxx/2 - 1024/2),(%maxy/2 - 768/2) - 1024,768
CLS GETSYSCOLOR(15)
SETDIALOGFONT 1
Lerne_mit_Bildern
Waitinput
End
Proc Lerne_mit_Bildern
DE&=@Create("Dialog",%Hwnd,"Lerne mit Bildern",(%maxx/2 - 1024/2),(%maxy/2 - 768/2) , 1024,768)
Declare hB%, hC%,OK%,Liste_Bilder%,zeile$,datei$,E_dit%
hB% = @Create("Button",DE&,"Schliessen",710,690,170,25)
E_dit%=Create("edit",DE&,"",210,690,150,25)
hC%=create("Button",DE&,"suche",370,690,70,25)
Liste_Bilder% = CREATE("SORTEDLISTBOX",DE&,"",0820,0130,0170,0450)
Text&=Create("Text",DE&,"Themen-Liste", 850,110,130,16)
assign #1,"System\Dateinamen_Bilder.txt"
reset #1
whileloop 25
input #1,zeile$
addstring(Liste_Bilder%,zeile$)
EndWhile
Close #1
'Titelschrift
vokabel$="Lerne mit Bildern"
StartPaint DE&
UseFont "Verdana",100,30,1,0,0
TextColor RGB(131,139,131),-1
DrawText 34,134,Vokabel$
UseFont "Verdana",100,30,1,0,0
TextColor RGB(255,105,180),-1
DrawText 30,130,Vokabel$
EndPaint DE&
vokabel$="suche ein Thema aus"
StartPaint DE&
UseFont "Verdana",100,30,1,0,0
TextColor RGB(131,139,131),-1
DrawText 34,284,Vokabel$
UseFont "Verdana",100,30,1,0,0
TextColor RGB(255,105,180),-1
DrawText 30,280,Vokabel$
EndPaint DE&
Text&=Create("Text",DE&,"Themen-Liste", 850,110,130,16)
Clear OK%
WhileNot Ok%
Waitinput
StartPaint DE&
CLS GETSYSCOLOR(15)
EndPaint DE&
If @Clicked(hB%)'OK wurde angeklickt
Ok% = 1
EndIf
If Getfocus(Liste_Bilder%)
Setfocus(DE&)
Vokabel$=Getstring$((Liste_Bilder%),GetCurSel(Liste_Bilder%))
StartPaint DE&
'Titelschrift
UseFont "Verdana",100,30,1,0,0
TextColor RGB(131,139,131),-1
DrawText 34,134,Vokabel$
UseFont "Verdana",100,30,1,0,0
TextColor RGB(255,105,180),-1
DrawText 30,130,Vokabel$
EndPaint DE&
Vokabel$=translate$(vokabel$," ","_")
datei$="Pictures\"+vokabel$+".bmp"
StartPaint DE&
loadbmp datei$,20,250;0
EndPaint DE&
Text&=Create("Text",DE&,"Themen-Liste", 850,110,130,16)
EndIf
If clicked(hC%)
datei$="Vokabel_Info\"+gettext$(E_dit%)+".txt"
If fileexists(datei$)
print "gefunden"
EndIf
EndIf
EndWhile
@DestroyWindow(DE&)
EndProc
|
|
|
| |
|
|
|
p.specht
| Weit davon entfernt, da durchzublicken - Aus der Hilfe von XP-11.2a: Beim Zeichnen in DialogBoxen und DialogFenstern ist zu beachten, dass diese Zeichnungen nicht automatisch erneuert werden, wenn die Dialogbox z.B. durch ein anderes Fenster verdeckt wurde. Scheinbar gilt das auch umgekehrt. Workaround: Ich würde versuchen, im Programmfluss nach dem "Fehlerereignis" mit ShowWindow(handle%, Modus) die entsprechenden Controls wieder sichtbar zu machen (So hab´ ich mir vor hm-zig Jahren mal beholfen). Oder ich stehe gerade wieder mal mächtig am Schlauch - dann sorry. |
|
|
| XProfan 11Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 29.02.2020 ▲ |
|
|
|
|
RudiB. | Danke für Deine Antwort. Hilft leider auch nicht... was auch noch komisch ist, das sobald ich dann versuche den Focus auf eines dieser "verschwundenen" z.B in das Edit klicke, dann wird das komplette Dialod-Fenster "gelöscht". Alle Elemente sind noch da und stellen sich wieder mit Maus drüberfahren und klick her. Aber egal...Ich benutze jetzt einfach kein CLS sondern lege einfach eine mit der Hintergrundfarbe gefüllte Bitmap drüber (über den Bereich ausserhalb der Dialog-Elemente). Nicht gerade genial, aber es wirkt, die Elemente bleiben nun. |
|
|
| |
|
|
|
p.specht
| Bravo! Manchmal führt der kürzeste Weg zum Erfolg eben durch das Gruselkabinett |
|
|
| XProfan 11Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 29.02.2020 ▲ |
|
|
|