Images werden nicht angezeigt ..... [Gelöst]

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Images werden nicht angezeigt ..... [Gelöst]

Beitrag von Tsuki-Namida »

hallo wie schon der Titel sagt...gehen die images und die button nicht wie sie sollen...

also ich habe eine procedure geschrieben "Procedure Naricht(Titel$,Text$,Typ,Fenster);Typ: 1=Fehler 2=Hinweis 3=Frage [Ja&OK=1 Nein=0]"

so wenn ich Typ = 2 angeben funktioniert es super also ohne probleme... gebe ich im Typ = 1 oder Typ = 3 an dann geht es nicht... zum ersten wird der Imagegadget nicht angezeigt und zu dem kann man den button nicht drücken auch wenn er vorhanden ist...

wenn ich die Image Variabel austausche geht dann das andere image und dafür das was drinne sein sollte nicht... also die images stimmem sind nicht kaput oder ähnliches... die images sind jewals Icon's 48 mal 48 pixel groß und haben eine farbtiefe von 24 bit und benötigen den selben speicher also alle drei verwendeten bilder sind gleich auser in der darstellung...

ach ja nehme ich ein anderes Image zum beispiel Image1 oder Image0 geht es genauso wenig... aber an einer anderen stelle der anwendung werden sie angezeigt...
Ich weis mir keinen raat mehr....


diese procedure soll später als messagerequester dienen damit es aber zum style der anwendung passt möchte ich meinen eigenen message requester nutzen.

hier ist die procedure:

Code: Alles auswählen

Procedure Naricht(Titel$,Text$,Typ,Fenster);Typ: 1=Fehler 2=Hinweis 3=Frage [Ja&OK=1 Nein=0]
  Window = OeffneFenster(#MSGWindow,0,0,400,100,Titel$,#PB_Window_ScreenCentered,WindowID(Fenster))
  If Window And CreateGadgetList(WindowID(#MSGWindow))
    If Typ=1
      ImageGadget(0,6,26,48,48,Image2)
      ImageButton(#MSG_OK,150,72,100,24,"OK",0)
    ElseIf Typ=2
      ImageGadget(0,6,26,48,48,Image4)
      ImageButton(#MSG_OK,150,72,100,24,"OK",0)
    ElseIf Typ=3
      ImageGadget(0,6,26,48,48,Image3)
      ImageButton(#MSG_JA,130,72,70,24,"Ja",0)
      ImageButton(#MSG_Nein,200,72,70,24,"Nein",0)
    EndIf
    Text = TextGadget(#PB_Any,55,5,350,65,Text$)
    SetGadgetColor(Text,#PB_Gadget_BackColor,RGB($CE,$DE,$F3))
    
  Else
    
  EndIf
  DisableWindow(Fenster,1)
EndProcedure
Zuletzt geändert von Tsuki-Namida am 18.02.2008 19:51, insgesamt 1-mal geändert.
Bild
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

Beitrag von Mok »

hmm,
OeffneFenster() is not a function, an array, or a linked list
Und wenn man stattdessen OpenWindow nimmt, wurde #MSGWindow nicht gefunden.
PS: Wieso 'Oeffne Fenster'? PB auf Deutsch?
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag von Tsuki-Namida »

eine berechtigte frage xD aber PB auf deutsch wäre ja mal wirklich was xD

nein^^
OeffneFenster ist ebenfals eine procedure^^ da ich mer als nur 5 fenser mache für die anwendung aber die fenster farbig haben möchte habe ich dafür einfach ne procedure gemacht damit ich es einfach habe...

Code: Alles auswählen

Procedure OeffneFenster(Constand,x,y,Breite,Hoehe,Titel$,Flag,WindowID)
  If WindowID
    a = OpenWindow(Constand,x,y,Breite,Hoehe,Titel$,Flag,WindowID)
  Else
    a = OpenWindow(Constand,x,y,Breite,Hoehe,Titel$,Flag)
  EndIf
  SetWindowColor(Constand,RGB($CE,$DE,$F3))
  ProcedureReturn a
EndProcedure
und "#MSGWindow" ist eine constande für das entsprechende fenster
Bild
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

PureBasic auf Deutsch hat's auch schon gegeben... :wink:
http://www.purebasic.fr/german/viewtopic.php?t=12111

@ Topic:
Du programmierst zu umständlich. Bei deiner OeffneFenster-Prozedur kannst du den Code um einige Zeilen verkürzen, wenn du optionale Parameter benutzt. Dann musst du WIndowID nicht auf 0 setzen, wenn du das nicht brauchst.
Darüber hinaus tut's auch ein Macro.

Deine Naricht-Prozedur (soll das vielleicht "Nachricht" heißen?) kannst du ebenfalls übersichtlicher gestaltetn. Beispielsweise kannst du Select benutzen und das Imagegadget, da es in allen 3 Fällen dieselben Koordinaten und Dimensionen hat, vor dem Select erstellen. Gib ihm einfach die ImageID 0; und dann innerhalb des Select weist du ihm die richtige ImageID zu.

Warum deine Buttons nicht erscheinen kann ich nicht sagen. Kontrolliere bitte noch einmal, welche Werte deine #MSG_* Konstanten haben. Haben diese die gleichen Werte wie bereits vorhandene gadgets? Dann gibts Konflikte. Und wieso erstellst du bei jedem Prozeduraufruf das Fenster neu? Du schließt es ja hinterher nicht einmal. Sondern du erstellst ein neues Fenster mit bestehenden IDs, was dazu fürht, dass das alte Fenster "überschrieben" wird. Das mag ja gut gehen, ich würds aber trotzdem anders machen.
Du möchtest doch anscheinend eine Art selbstgebauten Requester machen, oder? Dann würde ich dir empfehlen, für deine Image- und Gadget- und WindowIDs auf #PB_Any zu setzen!
Entweder benutzt du hinterher auch CloseWindow(), um das Fenster und alle Gadgets freizugeben, oder du versteckst das fenster nach Ende der Prozedur und zeigst es bei erneutem Aufruf wieder an.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag von Tsuki-Namida »

okay der rechtschreibfehler in der procedure ist das eine aber ändert ja nichts an der sache...

ich werde es mit select versuchen und die procedure für die fenster ja okay ein makro ist auch eine lösung^^

fenster schließen? warum kommst du darauf das ich die nciht schließen würde? nur weil in der procedure das nicht vorhanden ist? sicher schließe ich fenster ordnungs gemäs um ggf. fehler zu vermeiden...

[Edit]
war zwar nicht das problem aber dennoch anderweitig gelöst.
Hier mit einen großen Dank an alle dir sich dieses problem angesehn haben.
und ein noch größere Danke an "Andreas" aus Berlin
Bild
Antworten