Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: QB *Ikkunoiden teko*

Sivun loppuun

juhaz [23.10.2002 20:28:29]

#

Olen väsäilemässä vieläkin jonkin sortin GUI-ohjelmaa ja olen ajatellut nyt ihan kunnolla alkaa ikkunoita järjestämään vaikkakin alkeellisia sillaisia.....

Ikkunoita ei välttämättä tarvitse vielä pystyä siirtelemään, suurentamaan... ym, mutta sinne ikkunaan pitäisi saada tekstiä ja niin, että inputtikin toimii, mutta missään nimessä en haluaisi, että ikkuna "särkyisi" siihen, että teksti menisi ikkunan läpi, joten kuinka ehdottaisitte toimia? Koodin saanti olisi ihan kivaa......

ps: Olen saanut jo jonkinsorttisen ikkunan tehtyä ohjelmaani ja se on ascii merkein tehty......

Grey [23.10.2002 21:22:57]

#

Tämä koodi on suoraan omasta projektistani ja siinä saattaa olla virheitä. En ole testannut sitä mitenkään ja kommentitkin ovat huonot. Kannattaa testata itse ja kokeilla. Sen kuitenkin kerron että muuttuja R määrittää sen koska vaihtuu rivi ja D maksimipituuden sille miten paljon voi kirjoittaa. Koodi ei ole ihan valmis ja näin ollen siinä on hienoista parantelun varaa.

CLS

X = 12
Y = 2
D = 1
R = 1

DO
W$ = INKEY$
LOCATE 2, 2: PRINT "Komento - "
LOCATE Y, X: PRINT "Û"
IF W$ = CHR$(13) THEN EXIT DO
IF W$ = CHR$(8) THEN X = X - 1: LOCATE Y, X: PRINT "Û ": D = D - 1: R = R - 1: Kirjoitus$ = LEFT$(Kirjoitus$, LEN(Kirjoitus$) - 1)
IF W$ >= " " AND D >= 1 AND D <= 256 THEN LOCATE Y, X: PRINT W$: X = X + 1: D = D + 1: R = R + 1: Kirjoitus$ = Kirjoitus$ + W$
IF X < 12 THEN X = 12
IF D < 1 THEN D = 1

R <= 0 AND Y = 3 THEN Y = 2: X = 79: R = 68: LOCATE 3, 14: PRINT " "
R <= 0 AND Y = 4 THEN Y = 3: X = 79: R = 68: LOCATE 4, 14: PRINT " "
R <= 0 AND Y = 5 THEN Y = 4: X = 79: R = 68: LOCATE 5, 14: PRINT " "

R >= 69 AND Y = 2 THEN Y = 3: X = 12: R = 1: LOCATE 68, 78: PRINT " "
R >= 69 AND Y = 3 THEN Y = 4: X = 12: R = 1: LOCATE 68, 78: PRINT " "
R >= 69 AND Y = 4 THEN Y = 5: X = 12: R = 1: LOCATE 68, 78: PRINT " "
LOOP

Antti Laaksonen [23.10.2002 22:46:20]

#

Tekstin kirjoittamiseen kannattaa tehdä oma PRINT:in korvaava aliohjelma, joka tarkistaa, ettei tekstin leveys ylitä ikkunan leveyttä - ja jos ylittää, jakaa sen usemmalle riville.

Myös INPUT-komento kannattaa korvata jollain omatekoisella monipuolisemmalla funktiolla (ks. https://www.ohjelmointiputka.net/faq.php?sivu=4#33).

tuobbi-89 [24.10.2002 19:03:51]

#

Minusta voisit varmaan tehdä ikkunat ihan puhtaasti LINE-komennolla. Sitten voisit LOCATEN avulla sijoittaa tekstit ikkunaan. Ja vaikkapa sulkemisnapin saa ASCII-merkeillä, ja sitten tekee ehtolauseen, että jos klikkaa jostain tietystä kohtaa, ikkuna sulkeutuu. En tiedä, onko tuo oikea tapa, mutta niin minä sen tekisin!

Ja tosiaan tuo täytyykin tehdä jotenkin, niinkuin Antti sanoi, ettei ikkunan teksti ylitä tiettyä ikkunan rajaa.

tuobbi-89 [24.10.2002 19:05:41]

#

Ja muuten, jos kerran haluat tehdä nimenomaan ikkunoidun GUI:n, minusta sinun kannattaisi siirtyä Windows-puolelle, niin olisi sata kertaa helpompaa. Voisit vaikka harkita Visual Basicin opettelun alkamista. :)

juhaz [27.10.2002 20:17:09]

#

Sain nyt tehtyä sillaisen jutun mitä silloin kerran kysyin.... eli jonkin tietyn alueen rajaus ja niin, että kun sitä klikkaa kursorilla niin jotain tapahtuu.......
Eli hiiri + kuvakkeet tulee onnistumaan nykyään valmistaa........
ja ikkunoita olen tehnyt eri tyyppisiä ihan testeillä ja muilla, mutta nyt tuli ongelma.....

Ikkunalla vaikka taustaväri on valkoinen ja muuten ohjelman taustaväri taas on sininen, mutta kun jotain tekstiä haluaa ikkunaan niin tekstin tausta on sininen vaikka mitä yrittäisi tehdä.......
palette ja color komennot ei oikein toimi.....

Grey [27.10.2002 21:28:56]

#

Mitä näyttötilaa käytät siinä? Se kun saattaa vähän vaikuttaa erinäiseen asioihin. Niin ja oletko testannut tuota INPUTin mahdollista korviketta?

-Grey-

juhaz [27.10.2002 21:49:39]

#

en ole vielä paljon pidemmälle mitään testaillut, mutta näyttötilaa 1 olen esimerkiksi käyttänyt.......

nuo systeemit on vasta testin alla, mutta kun onnistun saada toimimaan sen systeemin niin uuden GUI:n teko voi alkaa....


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta