Unterschiedliche Größe?
Unterschiedliche Größe?
Hallo.
Habe ein auf meinem "großen" Rechner laufendes Programm mal auf meinem Notebook laufen lassen und stellte fest, dass das Hauptformular (FMain), welches per Programm Größe , Namen usw. erhält, nun (auf dem Notebook) zu klein ist. Es passen nicht mehr alle Buttons rein. Die Größenverhältnisse stimmen aber scheinbar.
Beide Monitore sind 1280 breit, Höhe einmal 1024, das Notebook nur 800.
Aber das dürfte doch nichts ausmachen, oder?
Beide Male ist Gambas 1.9.49 installiert, auf SuSE10.3+Packman.
gripslund
Habe ein auf meinem "großen" Rechner laufendes Programm mal auf meinem Notebook laufen lassen und stellte fest, dass das Hauptformular (FMain), welches per Programm Größe , Namen usw. erhält, nun (auf dem Notebook) zu klein ist. Es passen nicht mehr alle Buttons rein. Die Größenverhältnisse stimmen aber scheinbar.
Beide Monitore sind 1280 breit, Höhe einmal 1024, das Notebook nur 800.
Aber das dürfte doch nichts ausmachen, oder?
Beide Male ist Gambas 1.9.49 installiert, auf SuSE10.3+Packman.
gripslund
-
- Foriker
- Beiträge: 12
- Registriert: Di 22. Apr 2008, 22:03
- Wohnort: Beckingen
- Kontaktdaten:
Hallo gripslund,gripslund hat geschrieben:Sorry für die späte Antwort.
Wie meinst Du das? Soll ich 'ne andere Schrift wählen oder 'ne andere Größe?
MfG
gripslund
Das "Auflösungsproblem" hast Du immer! Du musst Deiner Anwendung die entsprechende Dynamik mitgeben. Das ganze kannst Du z.B. über HPanel (gb.qt) lösen.
Gruß
Steven
-
- Foriker
- Beiträge: 12
- Registriert: Di 22. Apr 2008, 22:03
- Wohnort: Beckingen
- Kontaktdaten:
-
- Foriker
- Beiträge: 12
- Registriert: Di 22. Apr 2008, 22:03
- Wohnort: Beckingen
- Kontaktdaten:
Viel Vergnügen!
Ich hoffe, ihr kommt klar damit. Wenn nicht fragen.
Es funktioniert bei mir so wie es oben steht auf meinem Notebook (1280*800).
gripslund
Code: Alles auswählen
' Gambas class file
b[51] AS Button ' das sind die Tasten
n AS Integer ' der Index der Tasten
r AS Integer ' der abgefragte Index der Tasten (Tag)
TextBox1 AS TextBox ' die "obere" Anzeige
TextBox2 AS TextBox ' die "untere" Anzeige
Index AS Integer ' erste oder zweite Zahl
CalcMode AS Integer ' + oder - oder * oder /
Num1 AS Float ' erste eingegebene Zahl
Num2 AS Float ' zweite eingegebene Zahl
Erase AS Integer ' Anzeige loeschen ?
eingabe AS String ' die gesamte Eingabe !
lang AS Integer ' Laenge der aktuellen Eingabe
teil[255] AS String ' max 255 Zeichen Laenge
zahl AS String ' String fuer Zwischensummen
num[127] AS Float ' die einzelnen Zahlen aus der gesamten Eingabe
PUBLIC SUB Form_Open()
DIM x, y AS Integer ' Schleifen-Variablen
ME.Text = "Taschenrechner V0.02"
ME.W = 800
ME.H = 260
ME.Center
TextBox1 = NEW TextBox(ME) AS "Text"
TextBox1.MoveScaled(2, 1, 52, 5)
TextBox1.Font = Font["Nimbus Mono L,Bold,+1"]
TextBox2 = NEW TextBox(ME) AS "Text"
TextBox2.MoveScaled(2, 6, 52, 5)
TextBox2.Font = Font["Nimbus Mono L,Bold,+1"]
n = 0 ' Index auf Null
FOR y = 1 TO 3 ' die Tasten 1 bis 9
FOR x = 1 TO 3
INC n
b[n] = NEW Button(ME) AS "btn"
b[n].Tag = n
b[n].Caption = n
b[n].MoveScaled(53 + x * 6, 25 - y * 4, 5, 3)
b[n].Font = Font["Bold"]
b[n].Background = Color.Foreground
b[n].Foreground = Color.SelectedForeground
b[n].Text = Str(n)
NEXT
NEXT
n = 0 ' Taste 0 Null
b[n] = NEW Button(ME) AS "btn"
b[n].Tag = n
b[n].Caption = n
b[n].MoveScaled(59, 25, 5, 3)
b[n].Font = Font["Bold"]
b[n].Background = Color.Foreground
b[n].Foreground = Color.SelectedForeground
b[n].Text = Str(n)
n = 10 ' das Komma
b[n] = NEW Button(ME) AS "btn"
b[n].Tag = n
b[n].Caption = n
b[n].MoveScaled(65, 25, 5, 3)
b[n].Font = Font["Bold"]
b[n].Background = Color.Foreground
b[n].Foreground = Color.SelectedForeground
b[n].Text = "."
n = 11 ' die Exp-Taste (noch nicht verwendet)
b[n] = NEW Button(ME) AS "btn"
b[n].Tag = n
b[n].Caption = n
b[n].MoveScaled(71, 25, 5, 3)
b[n].Font = Font["Bold"]
b[n].Background = &H777777&
b[n].Foreground = Color.SelectedForeground
b[n].Text = "EE"
n = 12 ' BackSpace
b[n] = NEW Button(ME) AS "btn"
b[n].Tag = n
b[n].Caption = n
b[n].MoveScaled(77, 13, 5, 3)
b[n].Font = Font["Bold"]
b[n].Background = &HFF0000&
b[n].Foreground = Color.SelectedForeground
b[n].Text = "BS"
n = 13 ' Break
b[n] = NEW Button(ME) AS "btn"
b[n].Tag = n
b[n].Caption = n
b[n].MoveScaled(83, 13, 5, 3)
b[n].Font = Font["Bold"]
b[n].Background = &HFF0000&
b[n].Foreground = Color.SelectedForeground
b[n].Text = "BRK"
n = 14 ' Multiplikation
b[n] = NEW Button(ME) AS "btn"
b[n].Tag = n
b[n].Caption = n
b[n].MoveScaled(77, 17, 5, 3)
b[n].Font = Font["Bold"]
b[n].Background = Color.Foreground
b[n].Foreground = Color.SelectedForeground
b[n].Text = "*"
n = 15 ' Division
b[n] = NEW Button(ME) AS "btn"
b[n].Tag = n
b[n].Caption = n
b[n].MoveScaled(83, 17, 5, 3)
b[n].Font = Font["Bold"]
b[n].Background = Color.Foreground
b[n].Foreground = Color.SelectedForeground
b[n].Text = "/"
n = 16 ' Addition
b[n] = NEW Button(ME) AS "btn"
b[n].Tag = n
b[n].Caption = n
b[n].MoveScaled(77, 21, 5, 3)
b[n].Font = Font["Bold"]
b[n].Background = Color.Foreground
b[n].Foreground = Color.SelectedForeground
b[n].Text = "+"
n = 17 ' Subtraktion
b[n] = NEW Button(ME) AS "btn"
b[n].Tag = n
b[n].Caption = n
b[n].MoveScaled(83, 21, 5, 3)
b[n].Font = Font["Bold"]
b[n].Background = Color.Foreground
b[n].Foreground = Color.SelectedForeground
b[n].Text = "-"
n = 18 ' Execute -> "="
b[n] = NEW Button(ME) AS "btn"
b[n].Tag = n
b[n].Caption = n
b[n].MoveScaled(77, 25, 11, 3)
b[n].Font = Font["Bold"]
b[n].Background = Color.Foreground
b[n].Foreground = Color.SelectedForeground
b[n].Text = "EXE"
' TextBox1.text = "_"
TextBox1.text = "_"
TextBox2.text = "Ready"
CalcMode = 0
Erase = 0
lang = 0
END
'---------------------------------------------------------------------------------------------------------------------------
PUBLIC SUB btn_Click()
DIM a, b, c, ll, x, y, z AS Integer
r = LAST.Tag ' Tag der zuletzt gedrueckten Taste auslesen
IF r < 10 THEN ' 0 - 9 sind die Ziffern
IF TextBox1.text = "_" THEN TextBox1.text = ""
IF Erase = 1 THEN TextBox1.text = "" ' Zuvor EXE gedrueckt -> neue Rechnung steht an
TextBox1.text = TextBox1.text & Str(r)
Erase = 0
ENDIF
IF r = 10 THEN ' Komma-Taste
IF Erase = 1 THEN TextBox1.text = ""
' IF InStr(TextBox1.text, ",") = 0 THEN ' Komma schon mal gedrueckt ?
IF Right(TextBox1.text, 1) <> "," THEN ' zwei Komma hintereiander ?
TextBox1.text = TextBox1.text & ","
Erase = 0
END IF
ENDIF
IF r = 11 THEN ' Exp-Taste (geht noch nicht!)
ENDIF
IF r = 12 AND Len(TextBox1.text) > 0 THEN ' BackSpace
TextBox1.text = Left$(TextBox1.text, Len(TextBox1.text) - 1)
ENDIF
IF r = 13 THEN ' BRK-Taste -> alles auf Null
lang = 0
TextBox1.text = "_"
TextBox2.text = "Ready"
Index = 0
CalcMode = 0
ENDIF
IF r = 14 THEN ' Multiplikation
IF TextBox1.text = "_" THEN TextBox1.text = "0"
TextBox1.text = TextBox1.text & "*"
ENDIF
IF r = 15 THEN ' Division
IF TextBox1.text = "_" THEN TextBox1.text = "0"
TextBox1.text = TextBox1.text & "/"
ENDIF
IF r = 16 THEN ' Addition
IF TextBox1.text = "_" THEN TextBox1.text = "0"
TextBox1.text = TextBox1.text & "+"
ENDIF
IF r = 17 THEN ' Subtraktion
IF TextBox1.text = "_" THEN TextBox1.text = "0"
TextBox1.text = TextBox1.text & "-"
ENDIF
IF r = 18 THEN ' EXE-Taste (=), jetzt geht's los
eingabe = TextBox1.text
lang = Len(TextBox1.text)
IF lang > 0 AND TextBox1.text <> "_" THEN
FOR x = 0 TO 254 ' Feld loeschen
teil[x] = ""
NEXT
FOR x = 0 TO 126 ' Feld loeschen
num[x] = 0
NEXT
FOR x = 1 TO lang ' die Eingabe in einzelne Zeichen zerlegen
teil[x] = Mid(eingabe, x, 1)
NEXT
y = 0 ' Index fuer die Anzahl der Zahlen und Rechenoperationen-1
zahl = ""
FOR x = 1 TO lang + 1
IF teil[x] <> "+" AND teil[x] <> "-" AND teil[x] <> "*" AND teil[x] <> "/" THEN
zahl = zahl & teil[x] ' Zahl zw. den Rechenoper. zusammensetzen
IF InStr(zahl, ",") > 1 THEN
TextBox2.text = "=> zuviel Komma in "
' STOP
END IF
ENDIF
IF teil[x] = "+" OR teil[x] = "-" OR teil[x] = "*" OR teil[x] = "/" OR teil[x] = "" THEN
INC y ' Rechenoper. rausfiltern und alles zaehlen
num[y] = Val(zahl)
teil[y] = teil[x]
zahl = ""
ENDIF
NEXT
FOR ll = 1 TO y ' Punktrechnung ( * oder / )
IF teil[ll] = "*" OR teil[ll] = "/" THEN
IF teil[ll] = "*" THEN
num[ll] = num[ll] * num[ll + 1]
ELSE IF teil[ll] = "/" THEN
num[ll] = num[ll] / num[ll + 1]
END IF
FOR b = ll + 1 TO y ' den Rest nach Links schieben
num[b] = num[b + 1]
teil[b - 1] = teil[b]
NEXT
DEC ll ' wieder vorn anfangen mit der Suche
END IF
NEXT
FOR ll = 1 TO y ' Strichrechnung ( + oder - )
IF teil[ll] = "+" OR teil[ll] = "-" THEN
IF teil[ll] = "+" THEN
num[ll] = num[ll] + num[ll + 1]
ELSE IF teil[ll] = "-" THEN
num[ll] = num[ll] - num[ll + 1]
END IF
FOR b = ll + 1 TO y ' den Rest nach Links schieben
num[b] = num[b + 1]
teil[b - 1] = teil[b]
NEXT
DEC ll ' wieder vorn anfangen mit der Suche
END IF
NEXT
TextBox2.text = num[1] ' das Ergebnis steht IMMER ganz vorn (Index 1)
END IF
Index = 0
CalcMode = 0
Erase = 1
lang = 0
ENDIF
END
'============================================================================================================================
'27.03.2008
'- alles ein wenig umgestrickt
'29.03.2008
'- Versuch, dass es so wie beim FX-880P funktioniert
'11.04.2008
'- Punkt- vor Strichrechnung funktioniert, jeweils von links nach rechts
Es funktioniert bei mir so wie es oben steht auf meinem Notebook (1280*800).
gripslund
-
- Foriker
- Beiträge: 12
- Registriert: Di 22. Apr 2008, 22:03
- Wohnort: Beckingen
- Kontaktdaten:
Hallo gripslund,
das ging ja schnell. Mal vorweg, wieso nimmst Du bei einem Taschenrechner nicht die Eval Componente von Gambas??
Dein Code würde sich extrem kürzen.
Gruß
Stefan
das ging ja schnell. Mal vorweg, wieso nimmst Du bei einem Taschenrechner nicht die Eval Componente von Gambas??
Code: Alles auswählen
Summe = Eval("(3+3)*3+(2+4)")' Rückgabewert Variant
Gruß
Stefan
Danke für den Tipp.
Aber mal ehrlich: das kann jeder! Ich will es mal per Hand versuchen, wenn es sich (für mich) als nicht realisierbar erweist, dann habe ich ja jetzt 'ne Rückfallebene. Soweit war ich noch nicht vorgedrungen, ist nämlich nur ein Hobby.
Jedenfalls schon wieder dazugelernt, Danke.
gripslund
Aber mal ehrlich: das kann jeder! Ich will es mal per Hand versuchen, wenn es sich (für mich) als nicht realisierbar erweist, dann habe ich ja jetzt 'ne Rückfallebene. Soweit war ich noch nicht vorgedrungen, ist nämlich nur ein Hobby.
Jedenfalls schon wieder dazugelernt, Danke.
gripslund
-
- Foriker
- Beiträge: 12
- Registriert: Di 22. Apr 2008, 22:03
- Wohnort: Beckingen
- Kontaktdaten:
Hallo gripslund,
Du bist ja mutig, aber, wenn es nur für Dich ist, ist es ja OK.
Ich vermute bei Deinem Layout hängt es an MoveScale. http://gambasdoc.org/help/comp/gb.qt/desktop/scale
Üblicherweise erstellt man die Gui für einen Taschenrechner statisch da sich ja nichts an den Tasten verändert. Wieso also dynamische Erstellung (das Programmieren kann man sich auch unnötig schwer machen) zusätzlich bläht es Deinen Code unnötig auf.
Gruß
Stefan
Du bist ja mutig, aber, wenn es nur für Dich ist, ist es ja OK.
Ich vermute bei Deinem Layout hängt es an MoveScale. http://gambasdoc.org/help/comp/gb.qt/desktop/scale
Üblicherweise erstellt man die Gui für einen Taschenrechner statisch da sich ja nichts an den Tasten verändert. Wieso also dynamische Erstellung (das Programmieren kann man sich auch unnötig schwer machen) zusätzlich bläht es Deinen Code unnötig auf.
Gruß
Stefan
Wer ist online?
Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste