Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
s-m-n

Anmeldungsdatum: 03.10.2005 Beiträge: 106 Wohnort: Pietling in Oberbayern / Deutschland
|
Verfasst am: 05.03.2006, 16:05 Titel: [solved] Programm mit Windows-GUI schreiben? |
|
|
Hi,
bekommt man es mit FB hin, dass ein Programm eine "normale" grafische Windows- oder Linuxoberfläche und nicht den schwarzweißen DOS-Look hat? Wenn ja, wie?
Danke, Gruß s-m-n
Zuletzt bearbeitet von s-m-n am 09.03.2006, 23:13, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
Michael Frey

Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 05.03.2006, 16:45 Titel: |
|
|
Das ist gar nicht so einfach, jenach Ansatz den man verfolgt.
Eins Vorweg, sie einfach wie in Visual Basic wird's nicht!
Entweder man nimmt die WinAPI, ein recht abenteuerliches Unterfangen.
(Zudem Windows Only)
Oder man nimmt eine Bilbiothek, z.B. http://www.wxwidgets.org/, wobei ich dort nicht weiss wie man es in Freebasic einbindet.
Wenn man das geschaft hat, läuft das Programm dann aber auch unter Linux und Windows.
Relativ einfach wäre es, wenn man mit Freebasic eine DLL schreibt und die dann von einem Visual Basic Programm aufgerufen wird. |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 05.03.2006, 19:44 Titel: |
|
|
http://freebasic.de/Referenz.php?zeig=tuts&col1=a0d5d0&ref=yes&show=screen%20(Grafik)
der öffnet ein "normales" fenster, jedoch kannst du da nicht einfach sagen "mach da nen button hin". Das funktioniert dann wie unter QB in den Grafikmodi aber halt nicht mehr als konsolen-fenster. Wenn du in der FBIDE unter einstellungen bei compilerparameter noch ein "-s gui" dazuschreibst verschwindet die konsole anschließend. _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
s-m-n

Anmeldungsdatum: 03.10.2005 Beiträge: 106 Wohnort: Pietling in Oberbayern / Deutschland
|
Verfasst am: 05.03.2006, 21:28 Titel: |
|
|
Danke, aber ich glaube, ich lass es lieber sein. Dafür fällt mir noch was anderes ein. Wie verhindert man in folgendem Beispiel
Code: | input "Sind Sie einverstanden (J/N)"; x$
if x$ = "J" or x$ = "j" then goto 8
if x$ = "N" or x$ = "n" then goto 15
....
15 sleep 0
|
dass andere Eingaben als J, j, N oder n akzeptiert werden? Else funktioniert nicht, hab ich schon versucht.
Danke!
Gruß s-m-n |
|
Nach oben |
|
 |
Tomtitom

Anmeldungsdatum: 20.09.2004 Beiträge: 308
|
Verfasst am: 05.03.2006, 22:14 Titel: |
|
|
da bleibt dir nix anderes übrig, als eine eigene Eingaberoutine zu schreiben, aber für diese Problem ist es nicht weiter schwer, einfach ne DO - LOOP - Schleife, in der du mit INKEY$ die Taste abfragst und sobald UCASE$("J") oder UCASE$("N") eingegeben werden, brichst du die Schleife mit EXIT DO ab.
Geht sicher auch etwas anders, das wäre nur mein Vorschlag. |
|
Nach oben |
|
 |
Michael Frey

Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 06.03.2006, 18:40 Titel: |
|
|
Code: | input "Sind Sie einverstanden (J/N)"; x$
x$=lcase(x$)
if x$ = "j" then
goto 8
elseif x$ = "n" then
goto 15
else
goto 25
end if
....
15 sleep 0 |
oder
Code: | input "Sind Sie einverstanden (J/N)"; x$
x$=lcase(x$)
select case x$
case "j"
goto 8
case "n"
goto 15
case else
goto 25
end select
....
15 sleep 0 |
|
|
Nach oben |
|
 |
s-m-n

Anmeldungsdatum: 03.10.2005 Beiträge: 106 Wohnort: Pietling in Oberbayern / Deutschland
|
Verfasst am: 07.03.2006, 18:33 Titel: |
|
|
@MichaelFrey
Danke, so werd ich es auch machen. Sieht nicht ganz so kompliziert aus.
Gruß s-m-n |
|
Nach oben |
|
 |
Eastler_dart

Anmeldungsdatum: 25.09.2005 Beiträge: 177 Wohnort: Baden-Würtemberg + Sachsen
|
Verfasst am: 07.03.2006, 22:51 Titel: |
|
|
und wenn du es so programmieren willst, daß man nur das J oder N drückt, ohne mit der Return-Taste abschließen zu müssen, dann verwende als Anwenderabfrage statt "input" "inkey$". z.B.:
Code: |
PRINT "Sind Sie einverstanden? (J/N)"
DO WHILE in$ <> "J" AND in$ <> "N" :'Schleife Do-Loop durchlaufen solange
:'weder "J" noch "N" gedrückt ist
:'
in$=UCASE$(INKEY$) :'einen einzelnen Tastendruck Abfragen
:'und als Großbuchstaben
:'in der Variablen in$ abspeichern
:'
LOOP :'
:'
'hier läuft das Programm weiter, wenn entweder "J" oder "N" gedrückt war
'in in$ steht die gedrückte Antwort
'
'nun kannst du mit einem der beide Konstrukten für Ja und Nein verzweigen
'------------------------------------------------------------------------
'danach entweder per SELECT CASE verzweigen
'------------------------------------------------------------------------
SELECT CASE in$
CASE "J"
'Befehle die auszuführen sind, wenn "Ja" gedrückt wurde
CASE "N"
'Befehle für die "Nein" Antwort
END SELECT
'------------------------------------------------------------------------
'oder per IF THEN verzweigen
'------------------------------------------------------------------------
IF in$="J" THEN
'Befehle für "JA"
END IF
IF in$="N" THEN
'Befehle für "NEIN"
END IF
|
Es ginge noch komfortabler, indem man eine Funktion dafür anlegt. Gibt man dieser Funktion einen deutlichen Namen könnte man etwa so schreiben:
Code: | 'REM DEMO FUER JA/NEIN-ABFRAGE
'==========================================================
'INITIALISIERUNGEN UND DECLARATIONEN:
'----------------------------------------------------------
DECLARE FUNCTION J_N_Frage$(Anzeigetext$)
'==========================================================
'HAUPTPROGRAMM
'----------------------------------------------------------
'SCHLEIFE "ABFRAGEN"
IF J_N_Frage("Sind Sie einverstanden?")="J" THEN
'Ja-Befehle
Print "Sie haben"
Print "JA gesagt"
IF J_N_Frage("Sind Sie sich sicher?")="J" THEN
PRINT "Na wenn Sie meinen, dann los!"
ELSE
PRINT "War gut, dass ich nochmal gefragt hab, gell?"
END IF
ELSE
'Nein-Befehle
Print "Sie haben"
Print "NEIN gesagt"
END IF
'----------------------------------------------------------
'noch ein kleines Stop, daß vor Programmende
'auf eine Taste wartet, sodaß man alles lesen kann:
DO WHILE INKEY$=""
LOOP
'==========================================================
'FUNCTIONEN UND SUBs
'----------------------------------------------------------
FUNCTION J_N_Frage$(Anzeigetext$)
PRINT Anzeigetext$
DO WHILE in$ <> "J" AND in$ <> "N"
in$=UCASE$(INKEY$)
LOOP
SELECT CASE in$
CASE "J"
J_N_Frage$="J"
CASE "N"
J_N_Frage$="N"
END SELECT
END FUNCTION |
Denkt daran, seit FB0.16 (hab ich grad gelesen) gibts innerhalb von SUBs und FUNKTIONs kein GOSUB mehr!!!. Ich sage nur, gewöhnt euch schon mal an Select Case
hoffe es hilft
Eastler _________________ Kaum macht mans richtig, schon geht's |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 07.03.2006, 22:54 Titel: |
|
|
gosub, ein uraltes relikt aus Non-Prozeduralen (oder wie das wort heißt ) zeiten  _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 08.03.2006, 01:15 Titel: |
|
|
gosub brauch keiner ich glaub das hab ich noch nie benutzt, nicht in FB und nicht in QB.. _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
s-m-n

Anmeldungsdatum: 03.10.2005 Beiträge: 106 Wohnort: Pietling in Oberbayern / Deutschland
|
Verfasst am: 09.03.2006, 23:12 Titel: |
|
|
@MichaelFrey
Problem gelöst! Dein zweites Beispiel haut super hin. Danke an alle!
Gruß s-m-n |
|
Nach oben |
|
 |
|