<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=60&amp;t=4431&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-10-24T20:12:45+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=60&amp;t=4431&amp;mode</id>
<entry>
<author><name><![CDATA[mikandrzej]]></name></author>
<updated>2013-10-24T20:12:45+01:00</updated>
<published>2013-10-24T20:12:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4431&amp;p=54205#p54205</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4431&amp;p=54205#p54205"/>
<title type="html"><![CDATA[Re: Borland C++ Builder 6 PE - aplikacje okienkowe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4431&amp;p=54205#p54205"><![CDATA[
Będzie o obsłudze COM, ale to jak się wyrobię z obowiązkami. Własnych komponentów sam jeszcze nie umiem do końca tworzyć, ale postaram się coś o tym napisać:) tymczasem wszelkie dyskusje proszę prowadzić w wyznaczonym do tego, osobnym temacie:)<br /><br />Wysłane z mojego GT-I9500 przy użyciu Tapatalk 4<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=431">mikandrzej</a> — 24 paź 2013, o 20:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kazzik87]]></name></author>
<updated>2013-10-24T19:46:37+01:00</updated>
<published>2013-10-24T19:46:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4431&amp;p=54204#p54204</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4431&amp;p=54204#p54204"/>
<title type="html"><![CDATA[Re: Borland C++ Builder 6 PE - aplikacje okienkowe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4431&amp;p=54204#p54204"><![CDATA[
Bardzo ciekawe i przyjemne wprowadzenie w środowisko <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" /><br />Sam pracuję od czasu do czasu w Borland.<br /><br />Przydałby się artykuł o wykorzystaniu i tworzeniu własnych wtyczek.<br /><br />Szukam informacji o wtyczkach do obsługi COM.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=476">kazzik87</a> — 24 paź 2013, o 19:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mikandrzej]]></name></author>
<updated>2013-10-11T18:35:14+01:00</updated>
<published>2013-10-11T18:35:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4431&amp;p=52591#p52591</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4431&amp;p=52591#p52591"/>
<title type="html"><![CDATA[Re: Borland C++ Builder 6 PE - aplikacje okienkowe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4431&amp;p=52591#p52591"><![CDATA[
<strong><span style="font-size: 200%; line-height: normal">Częśc 2.</span></strong><br />W drugiej części poradnika przejdziemy od razu do ciekawszych rzeczy, tzn. postaramy się napisać prosty notatnik. Nie będzie on co prawda miał jakiś fjuczerów, typu sprawdzanie pisowni, kolorowanie składni itp.; jednakże dzięki niemu nauczymy się obsługi plików oraz kilku ciekawych komponentów.<br /><br /><strong>Na początku tworzymy sobie nową aplikację.</strong><br />Pierwszą rzeczą, jaką zrobimy, będzie utworzenie MENU - czyli paska narzędzi na górze, w którym umieścimy sobie przyciski odpowiedzialne za otwieranie i zapisywanie pliku tekstowego.<br />W tym celu szukamy w zakładce Standard komponentu o nazwie MainMenu. Wybieramy go, a następnie umieszczamy w dowolnym miejscu naszej formatki.<br />Następnym krokiem będzie dodanie opcji w naszym Menu. W tym celu wybieramy sobie nasz obiekt MainMenu1 i w zakładce Properties szukamy parametru Items. Po jego zaznaczeniu pojawi nam się po prawej stronie przycisk z wielokropkiem. Klikamy w niego i naszym oczom ukaże się okienko o nazwie Form1-&gt;MainMenu1. Dodajmy teraz kategorię podmenu oraz kilka opcji pozwalających na pracę naszego Notatnika. Tą czynność wykonujemy klikając prawym przyciskiem myszy na niebieski kwadracik i wybierając Insert.<br /><br /><img src="http://forum.atnel.pl/_obrazki/o/431/29912b7611c65787edd8f965a4a188ca.jpg" alt="Obrazek" /><br /><img src="http://forum.atnel.pl/_obrazki/o/431/d08a99ec7e502688ffff8efafc61f98e.JPG" alt="Obrazek" /><br /><br />Umówmy się, że ten górny kwardacik to będzie kategoria, a dolne to będą opcje.<br />Zaznaczamy sobie naszą kategorię i szukamy w Object Inspector &gt; Properties parametru Caption. Wybierzmy go i zmieńmy jego wartość na &quot;Plik&quot;.<br />Teraz wybierzmy pierwszą opcję z kategorii Plik i tym samym sposobem nadajmy jej parametrowi Caption wartość &quot;Nowy&quot;. Tym samym sposobem dodajmy jeszcze kolejno opcje &quot;Otwórz...&quot;, &quot;Zapisz&quot;, &quot;Zapisz jako...&quot; oraz &quot;Zamknij&quot;.<br /><br /><img src="http://forum.atnel.pl/_obrazki/o/431/0811921f0edc011ec47f3dcc66c3a5e8.JPG" alt="Obrazek" /><br /><br /><strong>Pole tekstowe - Memo</strong><br />Weźmy teraz do łapki komponent o nazwie Memo i umieśćmy go na formatce.  Rozciągnijmy go tak, aby zajmował całe nasze pozostałe pole.<br /><span style="font-size: 150%; line-height: normal"><strong>WSKAZÓWKA!</strong></span><br />Szerokość naszego obiektu Memo1 powinna być mniejsza niż szerokość formatki - wtedy nie pojawi nam się pasek na dole (suwak do przesuwania lewo-prawo). Chodzi tutaj o to, żeby wziąć pod uwagę szerokość marginesu okna. Wystarczy, że Wybierzemy z TreeView naszą formatkę (Form1) i w zakładce Events klikniemy na zdarzenie OnCreate i w funkcji, która nam się utworzy, wkleimy prostą komendę:<br /><br />[syntax=cpp]void __fastcall TForm1::FormCreate(TObject *Sender)<br />{<br />Memo1-&gt;Width = Form1-&gt;ClientWidth; //dopasowanie szerokosci komponentu przy starcie programu<br />}[/syntax]<br />Oczywiście to samo robimy z wysokością - w rezultacie funkcja FormCreate na ten moment przyjmie postać:<br />[syntax=cpp]void __fastcall TForm1::FormCreate(TObject *Sender)<br />{<br />Memo1-&gt;Width = Form1-&gt;ClientWidth; //dopasowanie szerokosci komponentu przy starcie programu<br />Memo1-&gt;Height = Form1-&gt;ClientHeight; // dopasowanie wysokosci komponentu<br />}[/syntax]<br />Problem powstanie wtedy, gdy zachce nam się <strong>zmienić podczas pracy rozmiar okna</strong>. Jednakże na to też mamy sposób:) Wybieramy na naszej formatce zdarzenie OnResize i wklejamy tam dokładnie to samo. Ta funkcja dla odmiany wywoła się przy  każdym rozsunięciu okna.<br />void __fastcall TForm1::FormResize(TObject *Sender)<br />[syntax=cpp]{<br />Memo1-&gt;Width = Form1-&gt;ClientWidth; //dopasowanie szerokosci komponentu przy zmianie rozmiaru formatki<br />Memo1-&gt;Height = Form1-&gt;ClientHeight; // dopasowanie wysokosci komponentu<br />}[/syntax]<br /><br />Następną rzeczą, jaką wypadałoby zrobić, jest <strong>czyszczenie okna Memo1 przy starcie programu</strong>. W tym celu dopisujemy do funkcji OnCreate następującą linijkę:<br />[syntax=cpp]Memo1-&gt;Clear();[/syntax]<br />Teraz po uruchomieniu programu możemy już pisać sobie notatki <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> I będą one zapisane... szkoda tylko, że w pamieci RAM - czyli dopóki nie wyłączymy naszego notatnika.<br /><br /><strong><span style="font-size: 150%; line-height: normal">Obsługa plików w Memo.</span></strong><br />Aby otworzyć plik tekstowy, najpierw zdefiniujmy sobie, jakie pliki nasz edytor ma otwierać oraz jak ma to w ogóle robić <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Wybieramy zatem komponent o nazwie OpenDialog (zakładka Dialogs) i umieśćmy go na formatce. Teraz w zakładce Properties utworzonego obiektu wybierzmy sobie parametr Filter i w jego wartości kliknijmy sobie wielokropek. Dla uproszczenia ustawmy, żeby nasz edytor otwierał pliki *.txt oraz dowolne inne, ma to wyglądać tak:<br /><br /><img src="http://forum.atnel.pl/_obrazki/o/431/6ad07da49e0902af7f537dc66de599e9.JPG" alt="Obrazek" /><br /><br />Następną czynnością jest utworzenie okna dialogowego &quot;Otwórz...&quot; przy kliknięciu Plik&gt;Otwórz... Robimy to standardowo, czyli tworzymy funkcję:<br />[syntax=cpp]void __fastcall TForm1::Otwrz1Click(TObject *Sender)<br />{<br /> OpenDialog1-&gt;Execute(); //wywołaj okno dialogowe otwierania pliku<br />}[/syntax]<br />Oczywiście nie muszę już chyba dopowiadać, że robimy to poprzez zakładkę Events po wybraniu odpowiedniego obiektu (w naszym przypadku Otwrz1)<br /><br /><img src="http://forum.atnel.pl/_obrazki/o/431/129d16f09a6dbf6788fcb6bb9d42a732.JPG" alt="Obrazek" /><br /><br />Teraz podyktujemy Notatnikowi, co ma zrobić, jeśli wybierzemy jakiś plik do otwarcia. Tworzymy funkcję dla wydarzenia OnCanClose obiektu OpenDialog1:<br />[syntax=cpp]void __fastcall TForm1::OpenDialog1CanClose(TObject *Sender, bool &amp;CanClose)<br />{<br />Memo1-&gt;Lines-&gt;LoadFromFile(OpenDialog1-&gt;FileName);  //załaduj zawartosc pliku do pola tekstowego<br />}[/syntax]<br /><br />Możemy teraz uruchomić nasz program i sprawdzić, czy faktycznie nam się coś pokaże przy otwieraniu pliku <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> VOILA:<br /><br /><img src="http://forum.atnel.pl/_obrazki/o/431/3c7711d129d4d0c5f0ff1ad2924f9158.JPG" alt="Obrazek" /><br /><br />Analogicznie postępujemy dla opcji Zapisz jako... Wybieramy komponent SaveDialog i postępujemy dokładnie tak jak przy otwieraniu - tworzymy zdarzenia i wklepujemy kod:<br />[syntax=cpp]void __fastcall TForm1::Zapiszjako1Click(TObject *Sender)<br />{<br />SaveDialog1-&gt;Execute(); //wywołaj okno dialogowe zapisywania pliku<br />}<br />void __fastcall TForm1::SaveDialog1CanClose(TObject *Sender,<br />      bool &amp;CanClose)<br />{<br />Memo1-&gt;Lines-&gt;SaveToFile(SaveDialog1-&gt;FileName); //zapisz zawartosc obiektu Memo1 do pliku<br />}[/syntax]<br /><br />Na koniec oprogramujmy jeszcze opcje &quot;Zapisz&quot; oraz &quot;Zamknij&quot;<br /><br />[syntax=cpp]void __fastcall TForm1::Zapisz1Click(TObject *Sender)<br />{<br />if (OpenDialog1-&gt;FileName.IsEmpty())  //jesli wczesniej nie otwarto zadnego pliku<br />        SaveDialog1-&gt;Execute();            //to wywolaj okno zapisz jako...<br />else<br />        Memo1-&gt;Lines-&gt;SaveToFile(OpenDialog1-&gt;FileName);  // w przeciwnym wypadku - zapisz zmiany<br />}<br />void __fastcall TForm1::Zamknij1Click(TObject *Sender)<br />{<br />Form1-&gt;Close();<br />}[/syntax]<br /><br />Oczywiście można by jeszcze dodać opcję &quot;Nowy plik&quot;, czy ostrzeganie przed niezapisanym plikiem, ale to już pozostawiam Wam <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Następna część będzie już nawiązywać do komunikacji TCP. Naprawdę polecam korzystać z pomocy w internecie <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Warto też samemu sprawdzać różne funkcje, sprawdzając je po kolei z okienka podpowiedzi funkcji.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=431">mikandrzej</a> — 11 paź 2013, o 18:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mikandrzej]]></name></author>
<updated>2013-10-10T20:59:07+01:00</updated>
<published>2013-10-10T20:59:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4431&amp;p=52510#p52510</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4431&amp;p=52510#p52510"/>
<title type="html"><![CDATA[Borland C++ Builder 6 PE - aplikacje okienkowe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4431&amp;p=52510#p52510"><![CDATA[
<img src="http://forum.atnel.pl/_obrazki/o/431/b3e2e046626a567de58ff4abe8930fec.JPG" alt="Obrazek" /><br /><br /><strong>Witam.</strong><br />Chciałbym poprowadzić poradnik, jak wystartować z projektowaniem aplikacji w środowisku C++ Builder 6 firmy Borland. Językiem, którym posługujemy się w tym środowisku jest (jak sama nazwa wskazuje - C++). Z racji tego, że sam często borykam się z jakimś problemem w tym środowisku, liczę na uwagi z Waszej strony - w końcu jak to p.Mirek mówi - pisząc  tu, na forum, sami się uczymy <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Z resztą sam często pytam na czacie czy forum, kiedy czegoś nie rozumiem.<br /><br /><strong>Troszkę o środowisku.</strong><br />Sam C++ Builder (w wersji 6) jest już dzisiaj przez wielu uważany, jako dość przestarzałe narzędzie. Faktycznie coś w tym musi być, gdyż Borland już jej oficjalnie nie wspiera <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Nie zrażajmy się tym, gdyż nawet na dzień dzisiejszy można skomponować tu programy, które pozwolą nam wygodnie połączyć np. naszą płytkę ATB z komputerem (np. przez UART). Z resztą to, czego się tu nauczymy, na pewno przyda się w innych środowiskach:)<br /><br />Firma Borland wypuściła również równolegle środowisko Delphi, które do złudzenia przypomina C++ Builder. Dodatkową zaletą jest fakt, że wiele komponentów napisanych w Delphi (w języku Pascal), można również użyć w C++ Builderze. Często wyszukując w internecie przykłady rozwiązań jakiś problemów, błędów czy innych rzeczy, znajdujemy je w języku Pascal, dlatego też warto &quot;liznąć&quot; chociaż podstawy tego języka, żeby je chociaż zrozumieć i przepisać do C++.<br /><br /><strong>Do dzieła <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /></strong><br /><strong>1.</strong> Pobieramy instalkę C++ Buildera (np. z tąd: <!-- m --><a class="postlink" href="http://download.komputerswiat.pl/programowanie/srodowiska-programistyczne/borland-cplusplus-builder-6-personal" >http://download.komputerswiat.pl/progra ... 6-personal</a><!-- m --> )<br /><strong>2.</strong> Wykonujemy kolejne kroki, kiedy program zapyta nas o kod do instalacji, możemy spokojnie skopiować jakiś z internetu (np. z <!-- m --><a class="postlink" href="http://serials.ws" >http://serials.ws</a><!-- m --> ) - sam program jest darmowy do zastosowań niekomercyjnych.<br /><strong>3.</strong> Po zakończeniu instalacji i pierwszym uruchomieniu, program prosi nas, abyśmy się zarejestrowali. Można to zrobić, jednak jeśli nie zechcemy się rejestrować, program również się uruchomi.<br /><br />Po uruchomieniu programu powinniśmy zobaczyć takie okno:<br /><br /><a href="http://forum.atnel.pl/_obrazki/o/431/2f598cbc277f50f97c69f1cfd65ed4d9.JPG"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/431/2f598cbc277f50f97c69f1cfd65ed4d9.JPG" alt="Obrazek" /></a><br /><br />Pierwsze co robimy po uruchomieniu programu, to zapisujemy projekt gdzieś na dysku. w tym celu klikamy<br /><br /><a href="http://forum.atnel.pl/_obrazki/o/431/a2e698bb41327ecb3648771de6ba0922.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/431/a2e698bb41327ecb3648771de6ba0922.jpg" alt="Obrazek" /></a><br /><br />i zapisujemy najpierw nasze okienko, które tworzymy, a później cały projekt. Do testów nie musimy nawet zmieniać nazw plików.<br /><br /><strong>Na początek poszczególne elementy programu:</strong><br />Na samej górze mamy pasek narzędzi. Tego chyba nie trzeba tłumaczyć - znajdziemy tam różne mniej lub bardziej interesujące funkcje - będę się do niego odnosić, gdy zajdzie potrzeba coś tam nagrzebać.<br />Poniżej widać różne ikony,  na początku najbardziej interesujące dla nas to:<br /><img src="http://forum.atnel.pl/_obrazki/o/431/eac3d0346f3155425258f48e41e894e3.JPG" alt="Obrazek" />  - zapisywanie wszystkich modyfikowanych plików - polecam robić to tak często jak to możliwe, inaczej w przypadku awarii zasilania czy komputera utracimy wszystkie zmiany.<br /><img src="http://forum.atnel.pl/_obrazki/o/431/304ece589cd907a4a2298670d5fc6bf1.JPG" alt="Obrazek" />  - przełącza nas między okienkiem z kodem naszego programu, a Formatką/Formą z osadzonymi obiektami.<br /><img src="http://forum.atnel.pl/_obrazki/o/431/13acb5bbf47bd66a7634916cf50e4521.JPG" alt="Obrazek" />  - kompiluje i uruchamia nasz program. (UWAGA, ten przycisk nie zapisuje zmian w kodzie, a jedynie generuje nowy plik *.exe)<br /><br /><strong>Po prawej znajdują się komponenty w formie ikonek (są one posegregowane tematycznie).</strong><br />Te ikonki też będziemy omawiać w trakcie trwania poradnika. Teraz powiem już, że są one dzielone na widoczne i niewidoczne oraz że przyjęło się używać ich nazewnictwa, ale poprzedając je literką &quot;T&quot;. Np. komponent Edit jest klasą o nazwie TEdit - pomaga nam to tyle, że jeśli zechcemy znaleźć w wyszukiwarce jakąś stronę z opisem tego komponentu, znajdziemy tylko wyniki dotyczące środowiska Borlanda. Spróbujcie wpisać w google &quot;Edit&quot; oraz &quot;TEdit&quot; <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br /><strong>Osobno mamy cztery okienka:</strong><br /><strong>- Object TreeView</strong> - w nim ukażą się nasze obiekty w formie drzewka. Klikając w któryś z nich, możemy zmieniać jego ustawienia w oknie Object Inspector<br /><strong>- Object Inspector</strong> - tutaj naszym oczą ukazują się dwie zakładki:<br /><strong>+ Zakładka Properties</strong> - pozwala wprowadzać wiele zmian w każdym obiekcie. Mamy tu do ustawienia różne opcje, począwszy od samej nazwy obiektu, jego wielkość, kolor, kształt, położenie itp. Zmiany wprowadzone w tej zakładce obowiązują od uruchomienia programu (tj. możemy je później zmieniać podczas pracy programu - wprowadzając je w jego kodzie źródłowym).<br /><strong>+ Zakładka Events</strong> - w niej możemy konfigurować zdarzenia, które mogą nastąpić w trakcie np. kliknięcia w jakiś obiekt. Kiedy wybierzemy sobie np zdarzenie &quot;OnClick&quot; i klikniemy na nie podwójnie - program przejdzie od razu do okienka z kodem programu i utworzy szkielet funkcji, która się wykona jeśli właśnie klikniemy w dany obiekt.<br /><strong>- Nasza formatka</strong> (domyślnie Form1) - Tutaj umieszczamy wizualnie nasze obiekty na oknie programu. Tak właśnie będzie wyglądał nasz program po jego skompilowaniu <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><strong>- Nasz kod programu</strong> (domyślnie Unit1.cpp) - Najważniejsze okno, czyli instrukcje, jakie ma wykonać dla nas program (pisane oczywiście w C++ - podstawowa znajomość chociaż C - obowiązkowa <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> ).<br /><br /><br />Myślę, że czas teraz przejść do napisania <strong>pierwszego programu</strong> - czyli standardowe <em>&quot;Hello World&quot;</em> <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Umieśćmy sobie na naszej formatce trzy komponenty:<br /><strong>Edit</strong> (zakładka Standard) - klikamy raz na komponent z listy, następnie na wolny obszar na formatce.<br /><strong>Button,<br />Label.</strong><br />- już teraz zauważymy, że w oknie Object TreeView, na obszarze naszej formatki Form1 pojawiły się trzy obiekty: Button1, Edit1 oraz Label1.<br /><br /><a href="http://forum.atnel.pl/_obrazki/o/431/3ff1690e5a1ffa22b8cbd2ecdbbc6571.JPG"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/431/3ff1690e5a1ffa22b8cbd2ecdbbc6571.JPG" alt="Obrazek" /></a><br /><br />1. Kliknijmy teraz na Edit1, później w oknie Object Inspector, w zakładce Properties odszukajmy parametr &quot;Text&quot; i zmieńmy jego wartość na &quot;Hello World!&quot;.<br /><a href="http://forum.atnel.pl/_obrazki/o/431/00b8288b289b731c902a9a4dfff833db.JPG"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/431/00b8288b289b731c902a9a4dfff833db.JPG" alt="Obrazek" /></a><br /><br />2. Kliknijmy na Label1, następnie wartość jego parametru &quot;Caption&quot; usuńmy, tj zostawmy pustą.<br />3. Wartość parametru Caption naszego przycisku Button1 zmieńmy na &quot;Przepisz!&quot;<br /><br />Teraz nasze okno powinno prezentować się w ten sposób:<br /><br /><a href="http://forum.atnel.pl/_obrazki/o/431/6adc20a0afa83a0292a4421378adebe7.JPG"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/431/6adc20a0afa83a0292a4421378adebe7.JPG" alt="Obrazek" /></a><br /><br /><strong>Już teraz możemy uruchomić nasz program</strong> klikając zielony trójkącik skierowany w prawo <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Mamy ładne okienko, w którym..... w zasadzie nic się nie dzieje <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Możemy sobie klikać w przycisk &quot;Przepisz!&quot;, ale nie wywoła nam to żadnego efektu.<br /><strong><span style="font-size: 150%; line-height: normal"><br />Nadajmy więc troszkę życia naszemu programowi:)</span></strong><br />Zamknijmy więc nasz program, klikając <span style="text-decoration: underline">przycisk dla malkontentów</span>, czyli krzyżyk w jego prawym górnym rogu. Kliknijmy więc w TreeView na nasz Button1, następnie w Object Ispector wybierzmy zakładkę Events, a tam klikamy dwukrotnie na puste pole po prawej stronie od zdarzenia &quot;OnClick&quot;. Wygeneruje nam się szkielet funkcji:<br />[syntax=cpp]void __fastcall TForm1::Button1Click(TObject *Sender)[/syntax]<br />Dajmy więc instrukcję programowi, aby przepisał tekst z okna Edit1 do obiektu Label1! <br />Między klamrami wpisujemy instrukcje:<br />[syntax=cpp]void __fastcall TForm1::Button1Click(TObject *Sender)<br />{<br /> String text; //Tworzymy zmienną tekstową, w której przechowamy tekst z pola Edit1<br /> text = Edit1-&gt;Text; //Przepisujemy wartość parametru Text do zmiennej tekstowej<br /> Label1-&gt;Caption = text; //Wpisujemy wartość zmiennej text do obiektu Label1<br />}[/syntax]<br /><br />Chwila wyjaśnienia odnośnie stosowanego operatora &quot;-&gt;&quot;. Nasze obiekty (np.Label1) to w rzeczywistości wskaźnik do utworzonej zmiennej klasy TLabel, dlatego stosujemy taką przyjemną i przejrzystą strzałeczkę.<br /><br /><strong>UWAGA! </strong>Gdyby w trakcie testowania naszego programu wystąpił błąd w postaci wyjątku:<br /><br /><a href="http://forum.atnel.pl/_obrazki/o/431/46d2df882384b4a78d9c9495cc735e3a.JPG"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/431/46d2df882384b4a78d9c9495cc735e3a.JPG" alt="Obrazek" /></a><br /><br />Niestety nie uda nam się po prostu zamknąć okienka z programem. Jest to spowodowane tym, że program automatycznie przełącza naszą aplikację w tryb debugowania. Nie będę tego trybu omawiał, dlatego aby zamknąć naszą wadliwą aplikację, klikamy &quot;OK&quot;  a następnie w pasku narzędzi szukamy opcji &quot;Program Reset&quot; w zakładce &quot;Run&quot;.<br /><br /><br /><br /><span style="font-size: 150%; line-height: normal"><strong>CDN <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /></strong></span><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=431">mikandrzej</a> — 10 paź 2013, o 20:59</p><hr />
]]></content>
</entry>
</feed>