Types Funktion o.ä. mitgeben?
Übersicht

![]() |
RollingStoneBetreff: Types Funktion o.ä. mitgeben? |
![]() Antworten mit Zitat ![]() |
---|---|---|
hoi,
beispiel: BlitzBasic: [AUSKLAPPEN] Type textbox wie kann ich diesem type textbox nun eine funktion o.ä. mitgeben, worauf eben alle instanzen dieses typs angesprochen werden? oder auch nur bestimmte instanzen, die ich z.b. durch eine weitere field-eigenschaft festlege o.ä.? gibt es sowas wie eine funktion im type? grüße RS |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Im Type kannst du keine Funktion erstellen und Methoden gibt es auch nicht. Du kannst höchstens eine Funktion schreiben die alle Instanzen verarbeitet bzw. einer Funktion eine Instanz übergeben. | ||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Nicdel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Funktionen in Types gibt es nur in BlitzMax. Du kannst es aber auch so machen:
Code: [AUSKLAPPEN] Function DrawTextbox(tb.textbox) DrawImage tb\image, tb\x, tb\y ... End Function Edit: Das war keine Absicht ![]() |
||
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7 |
- Zuletzt bearbeitet von Nicdel am Mo, Nov 02, 2009 20:57, insgesamt einmal bearbeitet
![]() |
FireballFlame |
![]() Antworten mit Zitat ![]() |
---|---|---|
Richtig, du kannst eine Funktion erstellen, der du ein Objekt übergibst.
BlitzBasic: [AUSKLAPPEN] Function bla(blubb.textbox) Funktionen direkt in Types gibt es aber nicht in BlitzBasic, dafür müsstest du dann BlitzMax nehmen. EDIT: Bwargh, Beitragsinhaltklauer! |
||
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit |
![]() |
RollingStone |
![]() Antworten mit Zitat ![]() |
---|---|---|
dankeschön! ![]() |
||
![]() |
RollingStone |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich bräuchte noch mal einen kleinen denkanstoss.
ich hab also den oben genannten type für die textboxen angelegt und möchte jetzt für jede textbox die ich platziere einfach so vorgehen: BlitzBasic: [AUSKLAPPEN]
... wie überprüfe ich jetzt am einfachsten in der programm-hauptschleife, ob sich die maus gerade über irgendeine der textboxen bewegt oder angeklickt wird? am liebsten würde ich alle instanzen des types per schleife durchgehen und dann eben jeweils abfragen? oder soll ich jede instanz in ein array laden und dieses dann durchgehen? bitte helft mir. ![]() grüße RS |
||
Matthias |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hay.
Das ist eigentlich sehr einfach. Du must nur schauen ob deine Maus inerhalb eines Bereiches ist. Code: [AUSKLAPPEN] Type TButton Field Name$ Field PosX,PosY Field Width,Height End Type CreateButton("Knopf1",100,100,30,20) CreateButton("Knopf2",130,100,30,20) Function CreateButton(Name$,X,Y,W,H) B.TButton=New TButton B\Name=Name B\PosX=X B\PosY=Y B\Width=W B\Height=H End Function Function CheckButtons$() MausX=MouseX() MausY=MouseY() MausT=MouseDown(1) For B.TButton=Each TButton IF MausX>B\PosX and MausX<B\PosX+B\Width Then IF MausY>B\PosY and MausY<B\PosY+B\Height Then IF MausT=1 Then Return B\Name End IF End IF Next End Function ;------Mainloop--------- Apptitle CheckButtons() CheckButtons gibt dir dann den Name des Buttons zurück den du gedrückt hast. Getestet hab ich es jetzt nicht aber es müste so functionieren. Gruß Matz |
||
![]() |
RollingStone |
![]() Antworten mit Zitat ![]() |
---|---|---|
danke!
BlitzBasic: [AUSKLAPPEN]
ich bekomme also die richtige textbox ausgegeben, wenn ich mit der maus drüber bin oder klicke. je nachdem ob gehovered oder geklickt wird, soll jetzt die state-variable geändert werden, siehe code. mein problem ist jetzt, wie ich an diese state-variable von der betroffenen textbox dran komme. geht das nur wieder mit der for-each - schleife wie ich es in der hauptschleife probiert habe? a\state, welches ausgegeben wird, wird leider immer wieder überschriebens, sodass ich die zahl nicht genau erkennen kann...warum weiß ich nicht?! das prinzip mit a.TextBox = New TextBox habe ich auch noch nicht richtig verstanden. wie können denn von einer instanz mehrere instanzen erstellt werden? die variable a.TextBox kann es doch eigentlich gar nicht mehrere male geben? |
||
![]() |
RollingStone |
![]() Antworten mit Zitat ![]() |
---|---|---|
update:
BlitzBasic: [AUSKLAPPEN]
1. warum wird folgendes nicht korrekt ausgegeben und der status immer wieder überschrieben? (zahl auf zahl sodass man nichts mehr erkennen kann...) BlitzBasic: [AUSKLAPPEN] For a.TextBox = Each TextBox 2. gibt es noch eine andere möglichkeit, leichter an den state-wert von EINER BESTIMMTEN textbox zu kommen? ich möchte ja nicht jedes mal alle textboxen per for-each - schleife durchgehen sondern auf die eigenschaften zb. direkt per textbox-name zugreifen können. |
||
![]() |
Nicdel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Verwende bitte den Edit-Button um so etwas noch an deinen vorigen Beitrag dranzuhängen. Doppelposts sind verboten.
1. Wenn du 2 Textboxen hast, deren Status du dir ausgeben lässt ist es doch klar, dass übereinander geschrieben wird ![]() 2. Code: [AUSKLAPPEN] a.Textbox = new Textbox b.Textbox = new Textbox Print a.status print b.status |
||
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7 |
![]() |
RollingStone |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich bekomme aber doch per ...
BlitzBasic: [AUSKLAPPEN]
... nur den namen von einer textbox zurück...und nur von der wird doch der status ausgeben aufgrund der if-bedingung?! und wenn ich es so mache wie du unter "2.", funktioniert ja meine komplette CreateTextBox - funktion nicht mehr. das war ja mein erster gedanke, die instanzen immer a, b, c usw. zu benennen. (siehe postings weiter oben...) dann stellt sich mir aber die frage, wie ich die ganzen instanzen per schleife auf hover bzw. klick überprüfe... |
||
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
@2.:
Hänge an den Namen der Erstellfunktion ".TextBox". Das ändert - ähnlich wie "#" - den Datentyp des Rückgabewertes der Funktion. Am Ende dieser Funktion schreibst du noch ein "Return a", damit die Objektreferenz zurückgegeben wird. Diese kannst du z.B. nutzen, um auf den Zustand eines speziellen Objektes zuzugreifen. Ich habe die Vermutung, dass du das Konzept mit den Containervariablen falsch verstehst: (Die könnte vielleicht auch einen anderen Namen haben... Der wäre mir dann aber entfallen.) BlitzBasic: [AUSKLAPPEN] Local Container1.TextBox=CreateTextBox("abc", 0, 0, 100, 25, 1);2 TextBox-Objekte werden erstellt. Wenn du diese Funktion nur dazu brauchst, einen betätigten Button zu finden, solltest deine "CheckTextBox" mit einem anderen Rückgabewert ausstatten. Die gibt dann die Objektreferenz des betätigten Buttons zurück. (bzw. "Null", wenn keiner gedrückt wurde) Diese kannst du dann sofort und ohne Suchen verwenden, wenn du vorher schaust, dass sie nicht "Null" also ungültig ist. mfG mpmxyz |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
1. In der Create-Funktion hat das zeichnen mit Rect nichts zu suchen.
2. Du erstellst in jedem Schleifendurchlauf mit der Create-Funktion neue Textboxen Explizit Locale und Globale Variablen helfen den Überblick zu bewahren. BlitzBasic: [AUSKLAPPEN] Graphics 800, 600, 0, 2 |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
RollingStone |
![]() Antworten mit Zitat ![]() |
---|---|---|
sehr gut. vielen dank euch beiden! das hat mir sehr geholfen.
so sieht das ganze jetzt aus. ich habe eure beiden lösungsmöglichkeiten ausprobiert. und beide funktionieren perfekt. ![]() BlitzBasic: [AUSKLAPPEN]
|
||
![]() |
RollingStone |
![]() Antworten mit Zitat ![]() |
---|---|---|
bin noch nen bisschen am rumprobieren....bekomme es einfach nicht hin, dass nur eine textbox auf t\active = true geschaltet werden kann.
wenn eine box auf true ist und man möchte per klick auf die andere diese ebenfalls auf true schalten, soll die, die ursprünglich true war, auf false springen. es soll also jeweils immer nur eine box auf true sein können! hier der noch funktionierende code: BlitzBasic: [AUSKLAPPEN]
ps: ich hatte meinen letzten post erst editiert, musste aber dann feststellen, dass das thema bzw. der post nicht wieder hochgeholt wurde und ihr es so ja gar nicht sehen könnt, dass etwas editiert wurde. |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
1. Bitte Timer + Flip(0) benutzen (Hurra, 100 % Auslastung)
2. Bitte, bitte zum testen im Fenstermodus laufen lassen. 3. Wenn du schon die Textbox in der Funktion zurückgeben kannst, warum machst du es nicht auch? BlitzBasic: [AUSKLAPPEN]
Nicht perfekt |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group