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......
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
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
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.
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. :)
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.....
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-
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....
Aihe on jo aika vanha, joten et voi enää vastata siihen.