Arthan Napisano Luty 12, 2007 Zgłoś Share Napisano Luty 12, 2007 Mój problem wygląda następująco:Mam na Formie dwa komponenty RichEdit i Button i program ma działać w ten sposób że po kliknięciu na przycisk w RichEdit dopisuje się literka "a" o losowo wybranym kolorze dla tej literki.Jak na razie udało mi się stworzyć coś takiego w kodzie przycisku:[delphi][/delphi]Jednak nie działa to tak jak powinno bo przy kilku literkach wszystkie mają taki kolor jak pierwsza za wyjątkiem ostatniej literki. Ktoś mi doradził żebym po ustawieniu koloru literce zmieniał go z powrotem na czarny, ale to nic nie zmieniało. Coś robię nie tak i nie wiem co Link do komentarza Udostępnij na innych stronach More sharing options...
KKKas Napisano Luty 12, 2007 Zgłoś Share Napisano Luty 12, 2007 1. Randomize wywołuje się tylko raz w programie.2. Powinno być ok ;-) ҉ Link do komentarza Udostępnij na innych stronach More sharing options...
Blind Napisano Luty 12, 2007 Zgłoś Share Napisano Luty 12, 2007 podstawy.... www.blinder.pl - Blog Link do komentarza Udostępnij na innych stronach More sharing options...
Arthan Napisano Luty 13, 2007 Autor Zgłoś Share Napisano Luty 13, 2007 hehe... mnie nie chodzi w ogólę o to losowanie go może nawyt nie być ... zależy mi tylko na tym aby zmieniały się w RichEdicie kolory bez ingerencji użytkownika. To w zasadzie jest tylko przykład aby nie zaśmiecać forum.. mój program to klient telnetu i własnie próbuje w nim zrobić kolory wszystko działa za wyjątkiem tego. Randomize dałem tam po prostu żeby skrócić kod nie sądze żeby to cokolwiek pomogłojeśli umieszcze go przy metodzie Create. Nie mam w tej chwili delphi bo nie jestem u siebie więc nie mogę tego sprawdzić, ale moim zdaniem w zły sposób zaznaczam albo później odznaczam ten tekst. Co do Randomize to jeśli się nie myle to tym poleceniem inicjuje się bęben losujący dla naszego programu.. i co za różnica ile razy nim zakręce?? co prawda tak nie powinno się robić gdyż jest to nie potrzebne i zajmuje tylko czas ale to nie jest mój problem. Gdy uruchamiam mój program kolor losuje się dobrze widać że ostatnia literka zmienia kolor.. lecz później przy kolejnym przyciśnięciu przycisku zmienia swój kolor na kolor pierwszej literki.Próbowałem również z ustawieniem najpierw focusu na RichEdita... a także nieco inne sposoby dodawania literki "a" np. przez RichEdit.Lines... jak równiez w odwrotnej kolejności tzn. ustawić żeby od miejsca skończenia tekstu był kolor wylosowany i wtedy dodać literkę następną.Jak ort! nie dało mi to nic :/ jedynie w skrajnych przypadkach wcale nie kolorowało Tak czy inaczej dziękuję za zainteresowanie problemem Link do komentarza Udostępnij na innych stronach More sharing options...
Blind Napisano Luty 13, 2007 Zgłoś Share Napisano Luty 13, 2007 Jeśli chodzi o to randomize to sie mylisz, randomize powinno być wywyołane tylko RAZ w CAŁYM programie inaczej bedziesz ci losować ciągle tą SAMĄ liczbe. www.blinder.pl - Blog Link do komentarza Udostępnij na innych stronach More sharing options...
Arthan Napisano Luty 13, 2007 Autor Zgłoś Share Napisano Luty 13, 2007 [quote] Jeśli chodzi o to randomize to sie mylisz, randomize powinno być wywyołane tylko RAZ w CAŁYM programie inaczej bedziesz ci losować ciągle tą SAMĄ liczbe. [/quote]Mnie się wydaje że jest inna ale jeszcze to sprawdzę jak tylko dotrę do domu Link do komentarza Udostępnij na innych stronach More sharing options...
Arthan Napisano Luty 13, 2007 Autor Zgłoś Share Napisano Luty 13, 2007 CYTAT(Blind @ wto, 13 lut 2007 - 10:53) Jeśli chodzi o to randomize to sie mylisz, randomize powinno być wywyołane tylko RAZ w CAŁYM programie inaczej bedziesz ci losować ciągle tą SAMĄ liczbe.więc dotarłem.. sprawdziłem i zacytuje ... [quote] DescriptionRandomize initializes the built-in random number generator with a random value (obtained from the system clock). [/quote]Cóż mogę powiedzieć.. to jednak Ty się mylisz chodź po części masz rację. Randomize do generowania liczb losowych używa zegara systemowego co w rezultacie skutkuje tym, że jeśli wywołuje się ją w tej samej sekundzie kilka razy to wylosuje tą samą liczbę... jednak jeśli w następnej sekundzie to wylosuje się już inna.. nie wiem jak Ty ale ja wciskam przycisk średnio od 1 do 2 razy na sekundę tak więc po kilku wciśnięciach musi zostać wygenerowana inna liczba.dla celów edukacyjnych zamieszczam nieco przerobiony mój kod: [code=Delphi] procedure TForm1.Button1Click(Sender: TObject); begin RandoZ^NH[JĘHXY]K^HXY]K^ b33łb33łŁ&6VFCFWBŁ&6VFCFWBb33łb3(IĄQIĄQŹ))nd; [/code]Zyskaliśmy ładnie wyglądający kod i nawet działa losowanie w tej samej sekundzie, które mi do niczego nie jest potrzebne, natomiast ja widzę nadal ładny jednokolorowy rządek literek (nie licząc ostatniej literki). Cóż wróciliśmy do punktu wyjścia :/ Link do komentarza Udostępnij na innych stronach More sharing options...
KKKas Napisano Luty 13, 2007 Zgłoś Share Napisano Luty 13, 2007 Randomize; inicjuje zmienną RandSeed, która używana jest przez funkcję Random. Randomize powinno się wywołać jedynie raz w programie, aby Random zwracało pseudolosowe wartości. Kropka. ҉ Link do komentarza Udostępnij na innych stronach More sharing options...
Arthan Napisano Luty 13, 2007 Autor Zgłoś Share Napisano Luty 13, 2007 [quote] Randomize; inicjuje zmienną RandSeed, która używana jest przez funkcję Random. Randomize powinno się wywołać jedynie raz w programie, aby Random zwracało pseudolosowe wartości. Kropka. [/quote]Bardzo ładne podsumowanie skoro już skończyliśmy o tym zajmijmy się tym RichEditem może ?? Link do komentarza Udostępnij na innych stronach More sharing options...
KKKas Napisano Luty 13, 2007 Zgłoś Share Napisano Luty 13, 2007 Zmiana właściwości Text RichEdit'a usuwa wszystkie atrybuty. Dlatego, żeby zrobić to, o co Ci chodzi, tekst można dodawać np. tak:[delphi][/delphi] ҉ Link do komentarza Udostępnij na innych stronach More sharing options...
Arthan Napisano Luty 13, 2007 Autor Zgłoś Share Napisano Luty 13, 2007 O to mi właśnie chodziło KKKas dziękuję bardzo Teraz mogę na reszcie zająć się innymi aspektami mojego programu Link do komentarza Udostępnij na innych stronach More sharing options...
Arthan Napisano Luty 13, 2007 Autor Zgłoś Share Napisano Luty 13, 2007 Jeszcze jedno... jeśli ktoś kiedyś by chciał to w jakiś sposób wykorzystać, da się ten kod nieco skrócić co najmniej dwie linijki są nie potrzebne moim zdaniem: [code=Delphi] RichEdit1.SelStart := Length(RichEdit1.Lines.Text); RichE]K[[HH[JĘHXY]K[GG&'WFW26Ć\"Ł6&VS&6VFC6VGG&'WFW26ąąeąą(IĄMąŃŃŃ ąąeen; end; RichEdit1.SelText := 'a'; [/code]Tyle w zupełności powinno wystarczyć Jeszcze raz wielkie DZIĘKI dla KKKas'a za rozwiązanie problemu i dla Blind'a w końcu On też miał swój udział w tym przedsięwzięciu Link do komentarza Udostępnij na innych stronach More sharing options...
Polecane posty
Zarchiwizowany
Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.