Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

[solved] Programm mit Windows-GUI schreiben?

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
s-m-n



Anmeldungsdatum: 03.10.2005
Beiträge: 106
Wohnort: Pietling in Oberbayern / Deutschland

BeitragVerfasst am: 05.03.2006, 16:05    Titel: [solved] Programm mit Windows-GUI schreiben? Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 05.03.2006, 16:45    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 05.03.2006, 19:44    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
s-m-n



Anmeldungsdatum: 03.10.2005
Beiträge: 106
Wohnort: Pietling in Oberbayern / Deutschland

BeitragVerfasst am: 05.03.2006, 21:28    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Tomtitom



Anmeldungsdatum: 20.09.2004
Beiträge: 308

BeitragVerfasst am: 05.03.2006, 22:14    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 06.03.2006, 18:40    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
s-m-n



Anmeldungsdatum: 03.10.2005
Beiträge: 106
Wohnort: Pietling in Oberbayern / Deutschland

BeitragVerfasst am: 07.03.2006, 18:33    Titel: Antworten mit Zitat

@MichaelFrey

Danke, so werd ich es auch machen. Sieht nicht ganz so kompliziert aus. lächeln

Gruß s-m-n
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Eastler_dart



Anmeldungsdatum: 25.09.2005
Beiträge: 177
Wohnort: Baden-Würtemberg + Sachsen

BeitragVerfasst am: 07.03.2006, 22:51    Titel: Antworten mit Zitat

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 zwinkern

hoffe es hilft

Eastler
_________________
Kaum macht mans richtig, schon geht's
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen Yahoo Messenger
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 07.03.2006, 22:53    Titel: Antworten mit Zitat

Ich benutz fast nie GOSUB... grinsen
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 07.03.2006, 22:54    Titel: Antworten mit Zitat

gosub, ein uraltes relikt aus Non-Prozeduralen (oder wie das wort heißt grinsen) zeiten lachen
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 08.03.2006, 01:15    Titel: Antworten mit Zitat

gosub brauch keiner durchgeknallt 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
Benutzer-Profile anzeigen Private Nachricht senden
s-m-n



Anmeldungsdatum: 03.10.2005
Beiträge: 106
Wohnort: Pietling in Oberbayern / Deutschland

BeitragVerfasst am: 09.03.2006, 23:12    Titel: Antworten mit Zitat

@MichaelFrey
Problem gelöst! Dein zweites Beispiel haut super hin. Danke an alle!

Gruß s-m-n
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz