Miten merkkijono siirretään/kopioidaan toiselle lomakkeelle?
Tietojen vaihto
Täysi Kymppi
2527
0Äänestä
Muut lukivat myös
Odottaa vastausta
Näihin keskusteluihin ei ole vielä vastattu. Ole ensimmäinen.
Turvaa tilisi vahvistamalla puhelinnumerosi. Voit silloin palauttaa unohtuneen salasanan tekstiviestillä.
Näihin keskusteluihin ei ole vielä vastattu. Ole ensimmäinen.
Vastaukset 2
Vanhimmat
Delphin merkkijonot ( String ) eivät ole mitenkään sidoksissa lomakkeisiin (TForm -johdannaiset kuten TForm1 jne. ).
Mieti ensin, onko kukin tarvitsemasi merkkijono globaali (eli 1 kpl / ohjelma) vai oliokohtainen.
JOS kyse on globaaleista merkkijonoista, mikset tekisi uutta käännösyksikköä (New / Unit ).
Nimeä uusi UNIT vaikkapa ProjectGlobals.pas
kaikissa niissä uniteissa, joissa tarvitset noita merkkijonoja, lisää tämä lause:
uses
ProjectGlobals;
TAI, jos UNITissa on jo uses -lause, lisää sen loppuun:
,ProjectGlobals;
(vain 1 puolipiste USES -lauseen lopussa, eli välille jäävät muutetaan pilkuiksi).
jos nyt tuon ProjectGlobals -unitin interface -osaan laitat:
var
MJono1, MJono2, MJono3 : String;
niin voit käyttää kaikkia kolmea merkkijonoa kaikista UNITeista joista haluat, lisäät vain ko. ProjectGlobals kyseisen UNITin uses -lauseeseen.
Toki, jos jostain syystä esim. olet lisännyt TForm2 -luokkaan (muualle kuin private / protected -osaan) vaikkapa mjonon:
Testi : String;
niin esim Form1:ssä pääset siihen käsiksi näin:
Form2.Testi := 'haloo';
(joudut lisäämään Unit1:n uses -lauseeseen Unit2, jos TForm2 on määritelty UNITissa Unit2), tosin Delphi huomaa tämän tilanteen automaattisesti käännösvaiheessa ja ehdottaa: "Unit1 references Unit2; do you want to add Unit2 in the USES of Unit1" - vastaat tähän YES ja Delphi hoitaa tilanteen itse.
Tai sitten voi käyttää SendMessagea:
http://www.cryer.co.uk/brian/delphi/howto_send_custom_window_message.htm