<?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=59&amp;t=12128&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-06-25T20:15:54+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=59&amp;t=12128&amp;mode</id>
<entry>
<author><name><![CDATA[RafPe]]></name></author>
<updated>2015-06-25T20:15:54+01:00</updated>
<published>2015-06-25T20:15:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12128&amp;p=132886#p132886</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12128&amp;p=132886#p132886"/>
<title type="html"><![CDATA[Re: C# Windows Form - Własne okno dialogowe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12128&amp;p=132886#p132886"><![CDATA[
Wiesz ciezko powiedziec - bo to zalezy od tego co kto by chcial zrobic <br /><br />Jak masz czas mozesz sprobiwac zrobic cos malego a jak bedzie duze zainteresowanie to rozwiniesz<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4344">RafPe</a> — 25 cze 2015, o 20:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[komandos332]]></name></author>
<updated>2015-06-25T19:41:16+01:00</updated>
<published>2015-06-25T19:41:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12128&amp;p=132880#p132880</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12128&amp;p=132880#p132880"/>
<title type="html"><![CDATA[Re: C# Windows Form - Własne okno dialogowe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12128&amp;p=132880#p132880"><![CDATA[
Chyba mnie namówiłeś XD<br />Nie widziałem też na w tym dziale zbyt dużo o klasie Graphics. Myślisz że warto poruszyć ten temat ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4299">komandos332</a> — 25 cze 2015, o 19:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[RafPe]]></name></author>
<updated>2015-06-25T19:08:39+01:00</updated>
<published>2015-06-25T19:08:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12128&amp;p=132875#p132875</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12128&amp;p=132875#p132875"/>
<title type="html"><![CDATA[Re: C# Windows Form - Własne okno dialogowe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12128&amp;p=132875#p132875"><![CDATA[
Hey Maciek! <br /><br />Bardzo fajny poradniczek. Moglbys moze tez o WPF sprobowac - bo dzis odchodzi sie od Windows Forms<br /><br />Pozdrawiam<br />Raf<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4344">RafPe</a> — 25 cze 2015, o 19:08</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[komandos332]]></name></author>
<updated>2015-06-25T18:58:24+01:00</updated>
<published>2015-06-25T18:58:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12128&amp;p=132874#p132874</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12128&amp;p=132874#p132874"/>
<title type="html"><![CDATA[C# Windows Form - Własne okno dialogowe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12128&amp;p=132874#p132874"><![CDATA[
Witam wszystkich użytkowników.<br />Przechodzę aktualnie chwilę odmóżdżenia ponieważ mój projekt zaczyna dawać mi się we znaki ale to nie znaczy, że wolno mi marnotrawić mój czas.<br />Przejrzałem wątki w tym dziale i nie zauważyłem jednej rzeczy - która może być czasem przydatna. Jak zrobić własne okno dialogowe, które po wyświetleniu zatrzyma wykonywanie się głównego programu i będzie oczekiwać na naszą odpowiedź? Na pewno większość już się z tym spotkała ponieważ tak właśnie działa standardowy <span style="color: #40BFFF">MessageBox</span>. Do czego to można wykorzystać? Okno tworzenia nowego projektu, w którym wpisujemy dane projektu jak Nazwa, numer etc...<br /><br />Zaczynamy!<br /><br />Stwórzcie nowy projekt Windows Forms i dodajcie obiekt MenuStrip do głównej formatki:<br /><a href="http://forum.atnel.pl/_obrazki/o/4299/9aaebc29db2b667ca30fe9e7d7e9a214.png"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/4299/9aaebc29db2b667ca30fe9e7d7e9a214.png" alt="Obrazek" /></a><br /><br />Po dodaniu MenuStrip, dodajmy jeszcze parę innych kontrolek, jakichś przycisków, czegokolwiek i ustawcie ich właściwość Enabled na false.<br /><a href="http://forum.atnel.pl/_obrazki/o/4299/f2952cb2073eee32be0fbaebd0fab669.png"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/4299/f2952cb2073eee32be0fbaebd0fab669.png" alt="Obrazek" /></a><br /><br />Dodajmy do naszego górnego menu <span style="color: #40BFFF">MenuStrip</span> obiekt (ToolStripMenuItem) o nazwie Nowy projekt.<br />Po uruchomieniu naszego programu, widać, że przyciski są zablokowane - tak też ma pozostać do czasu, aż<br />utworzymy sobie nowy projekt w naszym programie!<br /><a href="http://forum.atnel.pl/_obrazki/o/4299/c76628ac175cd4cfb353dc4fa951ff5e.png"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/4299/c76628ac175cd4cfb353dc4fa951ff5e.png" alt="Obrazek" /></a><br /><br />Okej, czas zacząć tworzyć nasze nowe okno dialogowe. W eksploratorze solucji SolutionExplorer, klikamy prawym przyciskiem myszy i wycieramy<br />&quot;Add&quot; --&gt; &quot;Windows Form...&quot;<br /><a href="http://forum.atnel.pl/_obrazki/o/4299/0988b49cd9d3c41e4dd87bf44451b810.png"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/4299/0988b49cd9d3c41e4dd87bf44451b810.png" alt="Obrazek" /></a><br /><br />Dodajmy również dwa <span style="color: #40BFFF">TextBox</span>'y i 2 <span style="color: #40BFFF">Button</span>'y. Zatytułujmy przyciski kolejno &quot;Stwórz&quot; oraz &quot;Anuluj&quot; a w <span style="color: #40BFFF">TextBox</span>'ach będziemy wpisywać dane nowego projektu. Niech to wygląda mniej więcej w ten sposób:<br /><a href="http://forum.atnel.pl/_obrazki/o/4299/08bdc738d92a705046b668568dcdf75e.png"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/4299/08bdc738d92a705046b668568dcdf75e.png" alt="Obrazek" /></a><br /><br />Przechodzimy teraz do kodu klasy naszego okna dialogowego. Obsłużymy tutaj tylko dwa zdarzenia - naciśnięcia przycisków.<br />Będziemy musieli stworzyć sobie dwie właściwości typu string, które przechowają nam dane naszego projektu.<br /><br />[syntax=csharp]private string projectName, projectObjective;<br /><br />public string ProjectName<br />{<br />    get { return projectName; }<br />}<br /><br />public string ProjectObjective<br />{<br />    get { return projectObjective; }<br />}[/syntax]<br /><br />Żeby ułatwić sobie zadanie, możemy zablokować możliwość zamknięcia okna przez standardowy przycisk &quot;krzyżyk&quot; w prawym górnym rogu ekranu.<br />Sprawa jest prosta - wystarczy odpowiednio obsłużyć zdarzenie FromClosing(). Dodajmy sobie zmienną <span style="color: #0040FF">bool</span> która anuluje<br />zamykanie okna, jeżeli jej wartość nie jest równa <span style="color: #0040FF">true</span>.<br /><br />Tak teraz wygląda cały kod naszego okna dialogowego.<br />[syntax=csharp]using System;<br />using System.Collections.Generic;<br />using System.ComponentModel;<br />using System.Data;<br />using System.Drawing;<br />using System.Linq;<br />using System.Text;<br />using System.Threading.Tasks;<br />using System.Windows.Forms;<br /><br />namespace MainWindow<br />{<br />    public partial class DialogWindow : Form<br />    {<br /><br />        public static string projectName, projectObjective;<br />        private bool close;<br /><br />        public DialogWindow()<br />        {<br />            InitializeComponent();<br />        }<br /><br />        private void buttonAccept_Click(object sender, EventArgs e) //Zdarzenie naciśnięcia przycisku Stwórz.<br />        {<br /><br />        }<br /><br />        private void buttonAbort_Click(object sender, EventArgs e) //Zdarzenie naciśnięcia przycisku Anuluj<br />        {<br /><br />        }<br /><br />        private void DialogWindow_FormClosing(object sender, FormClosingEventArgs e) //Zdarzenie zamykania okna<br />        {<br />            if (!close) e.Cancel = true; //Jeżeli nasz zmienna nie jest równa true, okno nie zamknie się nawet po naciśnięciu krzyżyka.<br />        }<br />    }<br />}[/syntax]<br /><br />Lecimy dalej. Zajmijmy się najpierw zdarzeniem anulowania tworzenia nowego projektu.<br />W przypadku anulowania, okno powinno się jak najbardziej zamknąć, przy czym powinno również zwrócić jakąś wartość dialog result - ale jak?<br />Nic prostszego. Wystarczą nam do tego aż TRZY linijki kodu w naszym zdarzeniu!<br /><br />[syntax=csharp]private void buttonAbort_Click(object sender, EventArgs e) //Zdarzenie przycisku Anuluj<br />{<br />    this.DialogResult = DialogResult.Cancel; // Zapisujemy do właściwości tego okna DialogResult to co ma zwrócić po zamknięcie.<br />     close = true; //Ustawiamy naszą zmienną anulującą zamykanie okna na &#91;color=#0040FF&#93;true&#91;/color&#93;, aby tego nie robiła ^^<br />     this.Close(); //Zamykamy formatkę.<br />}[/syntax]<br /><br />Cały kod okna dialogowego.<br />[syntax=csharp]using System;<br />using System.Collections.Generic;<br />using System.ComponentModel;<br />using System.Data;<br />using System.Drawing;<br />using System.Linq;<br />using System.Text;<br />using System.Threading.Tasks;<br />using System.Windows.Forms;<br /><br />namespace MainWindow<br />{<br />    public partial class DialogWindow : Form<br />    {<br /><br />        public static string projectName, projectObjective;<br />        private bool close;<br /><br />        public DialogWindow()<br />        {<br />            InitializeComponent();<br />        }<br /><br />        private void buttonAccept_Click(object sender, EventArgs e) //Zdarzenie naciśnięcia przycisku Stwórz.<br />        {<br /><br />        }<br /><br />        private void buttonAbort_Click(object sender, EventArgs e) //Zdarzenie przycisku Anuluj<br />        {<br />            this.DialogResult = DialogResult.Cancel;<br />            close = true;<br />            this.Close();<br />        }<br /><br />        private void DialogWindow_FormClosing(object sender, FormClosingEventArgs e) //Zdarzenie zamykania okna<br />        {<br />            if (!close) e.Cancel = true; //Jeżeli nasz zmienna nie jest równa true, okno nie zamknie się nawet po naciśnięciu krzyżyka.<br />        }<br />        <br />    }<br />}[/syntax]<br /><br />Teraz czas na drugi przycisk. Dla smaczku dodamy tutaj sprawdzanie, czy aby użytkownik nie chce nas wykiwać i stworzyć projektu bez nazwy :O<br />Do dzieła!<br /><br />[syntax=csharp]private void buttonAccept_Click(object sender, EventArgs e) //Zdarzenie naciśnięcia przycisku Stwórz.<br />{<br />    if (string.IsNullOrEmpty(textBoxProjectName.Text))//Sprawdzenie czy nasz textBox czasem nie jest pusty.<br />    {<br />        MessageBox.Show(&quot;Ej no ej, powolutku... Nazwa projektu nie może być pusta!&quot;, &quot;Informacja&quot;, MessageBoxButtons.OK,                                           MessageBoxIcon.Information);<br />        return;<br />    }<br />    else if(string.IsNullOrEmpty(textBoxProjectObjective.Text)) //Sprawdzenie czy nasz textBox czasem nie jest pusty.<br />    {<br />        MessageBox.Show(&quot;Projekty które nie mają celu, są bez sensu. Bardzo mi przykro ale nie mogę stworzyć takiego projektu&quot;, &quot;Informacja&quot;,<br />            MessageBoxButtons.OK, MessageBoxIcon.Information);<br />        return;<br />    }<br /><br />    //Jeżeli wszystko jest w porządku zapisujemy tekst z textboxów do naszych pól, których wartość będzie można pobrać z właściwości okna.<br /><br />     projectName = textBoxProjectName.Text;<br />     projectObjective = textBoxProjectObjective.Text;<br /><br />    this.DialogResult = DialogResult.OK; // Zapisujemy do właściwości tego okna DialogResult to co ma zwrócić po zamknięcie.<br />    close = true; //Ustawiamy naszą zmienną anulującą zamykanie okna na &#91;color=#0040FF&#93;true&#91;/color&#93;, aby tego nie robiła ^^<br />    this.Close(); //Zamykamy formatkę.<br />}[/syntax]<br /><br />Końcowy kod naszego okna dialogowego:<br />[syntax=csharp]using System;<br />using System.Collections.Generic;<br />using System.ComponentModel;<br />using System.Data;<br />using System.Drawing;<br />using System.Linq;<br />using System.Text;<br />using System.Threading.Tasks;<br />using System.Windows.Forms;<br /><br />namespace MainWindow<br />{<br />    public partial class DialogWindow : Form<br />    {<br /><br />        public static string projectName, projectObjective;<br />        private bool close;<br /><br />        public DialogWindow()<br />        {<br />            InitializeComponent();<br />        }<br /><br />        private void buttonAccept_Click(object sender, EventArgs e) //Zdarzenie naciśnięcia przycisku Stwórz.<br />        {<br />            if (string.IsNullOrEmpty(textBoxProjectName.Text))//Sprawdzenie czy nasz textBox czasem nie jest pusty.<br />            {<br />                MessageBox.Show(&quot;Ej no ej, powolutku... Nazwa projektu nie może być pusta!&quot;, &quot;Informacja&quot;, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />                return;<br />            }<br />            else if(string.IsNullOrEmpty(textBoxProjectObjective.Text)) //Sprawdzenie czy nasz textBox czasem nie jest pusty.<br />            {<br />                MessageBox.Show(&quot;Projekty które nie mają celu, są bez sensu. Bardzo mi przykro ale nie mogę stworzyć takiego projektu&quot;, &quot;Informacja&quot;,<br />                    MessageBoxButtons.OK, MessageBoxIcon.Information);<br />                return;<br />            }<br /><br />            //Jeżeli wszystko jest w porządku zapisujemy tekst z textboxów do naszych pól, których wartość będzie można pobrać z właściwości okna.<br /><br />            projectName = textBoxProjectName.Text;<br />            projectObjective = textBoxProjectObjective.Text;<br /><br />            this.DialogResult = DialogResult.OK; // Zapisujemy do właściwości tego okna DialogResult to co ma zwrócić po zamknięcie.<br />            close = true; //Ustawiamy naszą zmienną anulującą zamykanie okna na &#91;color=#0040FF&#93;true&#91;/color&#93;, aby tego nie robiła ^^<br />            this.Close(); //Zamykamy formatkę.<br /><br />        }<br /><br />        private void buttonAbort_Click(object sender, EventArgs e) //Zdarzenie przycisku Anuluj<br />        {<br />            this.DialogResult = DialogResult.Cancel; // Zapisujemy do właściwości tego okna DialogResult to co ma zwrócić po zamknięcie.<br />            close = true; //Ustawiamy naszą zmienną anulującą zamykanie okna na &#91;color=#0040FF&#93;true&#91;/color&#93;, aby tego nie robiła ^^<br />            this.Close(); //Zamykamy formatkę.<br />        }<br /><br />        private void DialogWindow_FormClosing(object sender, FormClosingEventArgs e) //Zdarzenie zamykania okna<br />        {<br />            if (!close) e.Cancel = true; //Jeżeli nasz zmienna nie jest równa true, okno nie zamknie się nawet po naciśnięciu krzyżyka.<br />        }<br />        <br />    }<br />}[/syntax]<br /><br />Czas wrócić do głównego okna, zostało już naprawdę niewiele roboty^^<br />Obsłużmy więc zdarzenie naciśnięcia z górnego menu &quot;Nowy projekt&quot;<br />bo w zasadzie to wtedy musi nam się pojawić okno dialogowe.<br /><br />[syntax=csharp]private void newProjectToolStripMenuItem1_Click(object sender, EventArgs e)<br />{<br />    DialogWindow _dialogWindow = new DialogWindow(); //Tworzymy nowy obiekt stworzonej przez nas klasy DialogWindow.<br /><br />    if (_dialogWindow.ShowDialog() != DialogResult.OK) return; /*Wszystko na temat! W tym miejscu program będzie oczekiwał na zamknięcia okna<br />                                                                                         dialogowego ponieważ żeby sprawdzić czy warunek jest spełniony lub też nie, nasze okno<br />                                                                                         musi coś zwrócić! W tym przypadku zdarzenie zakończy działanie, jeżeli okno zwrócić<br />                                                                                         cokolwiek innego niż<br />                                                                                         DialogResult.OK.*/<br />}[/syntax]<br /><br />Jeżeli wiemy, że DialogResult jest taki jaki chcieliśmy, możemy  śmiało pobrać sobie wartości pól typu string okna dialogowego poprzez jego właściwości, do naszego głównego okna. W tym celu trzeba by było stworzyć sobie jakieś zmienne, żeby to przechować. Dobrze wiecie o co chodzi, więc nie muszę o tym pisać.<br /><br />Dla efektu, obsłużmy jeszcze nasze dwa przyciski, ja dałem dwa, nie wiem jak wy.<br />Ale chwila, nasze przyciski są zablokowane - prawie bym zapomniał <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><br /><br />dodajemy po naszym warunku jeszcze <br /><br />[syntax=csharp]buttonAddProjectDescription.Enabled = true;<br />buttonLoadPicture.Enabled = true;[/syntax]<br /><br />i to tyle - zróbcie sobie z nimi co chcecie. Teraz macie stworzony nowy projekt, z danymi wpisanymi przez użytkownika które trzeba wpisać aby zacząć pracę. Nie ładnie tak ludzi do czegoś zmuszać no ale cóż, czasami trzeba ale to tylko i wyłącznie dla ich dobra! ^^<br /><br />U mnie kod głównego okna wygląda teraz tak:<br />[syntax=csharp]using System;<br />using System.Collections.Generic;<br />using System.ComponentModel;<br />using System.Data;<br />using System.Drawing;<br />using System.Linq;<br />using System.Text;<br />using System.Threading.Tasks;<br />using System.Windows.Forms;<br /><br />namespace MainWindow<br />{<br />    public partial class Form1 : Form<br />    {<br /><br />        private string projectName, projectObjectives;<br /><br />        public Form1()<br />        {<br />            InitializeComponent();<br />        }<br /><br />        private void newProjectToolStripMenuItem1_Click(object sender, EventArgs e)<br />        {<br />            DialogWindow _dialogWindow = new DialogWindow(); //Tworzymy nowy obiekt stworzonej przez nas klasy DialogWindow.<br /><br />            if (_dialogWindow.ShowDialog() != DialogResult.OK) return; /*Wszystko na temat! W tym miejscu program będzie oczekiwał na zamknięcia okna<br />                                                                        dialogowego<br />                                                                        ponieważ żeby sprawdzić czy warunek jest spełniony lub też nie, nasze okno musi coś zwócić!<br />                                                                        W tym przypadku zdarzenie zakończy działanie, jeżeli okno zwróci cokolwiek innego niż<br />                                                                        DialogResult.OK.*/<br /><br />            buttonAddProjectDescription.Enabled = true; //Odblokowanie przycisku.<br />            buttonLoadPicture.Enabled = true; //Odblokowanie przycisku<br /><br />            projectName = _dialogWindow.ProjectName; //Poberanie nazwy projektu z właściwości okna dialogowego.<br />            projectObjectives = _dialogWindow.ProjectObjective; //Pobieranie celu projektu z właściwości okna dialogowego.<br />        }<br /><br />        private void buttonLoadPicture_Click(object sender, EventArgs e)<br />        {<br />            pictureBox1.BackgroundImageLayout = ImageLayout.Center; //Wyśrodkowanie obrazka.<br />            pictureBox1.BackgroundImage = Properties.Resources.atnel_banner; //Załadowanie obrazka<br />        }<br /><br />        private void buttonAddProjectDescription_Click(object sender, EventArgs e)<br />        {<br />            Bitmap bmp = new Bitmap(pictureBox1.Width, pictureBox1.Height); //Nowa bitmapa o rozmiarach pictureBox1<br />            Graphics g = Graphics.FromImage(bmp); //Nowy obiekt klasy Graphics, będzie rysował po mojej bitmapie.<br />            g.DrawString(&quot;Nazwa projektu: &quot; + projectName + &quot;\nCel projektu: &quot; + projectObjectives, new Font(&quot;Cambria&quot;, 12), Brushes.Black,<br />                new PointF(0.0f, 0.0f)); //Metoda DrawString, po prostu rysuje tekst.<br />            pictureBox1.Image = bmp; //Bitmapka, do pictureBoxa!<br />        }<br />    }<br />}[/syntax]<br /><br />Screeny kolejnych kroków działania programu.<br /><br />1:<br /><a href="http://forum.atnel.pl/_obrazki/o/4299/3898dd914b2e89cc82620ae9bb128f6c.png"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/4299/3898dd914b2e89cc82620ae9bb128f6c.png" alt="Obrazek" /></a><br /><br />2: Jak widać, główne okno jest nieaktywne a okno dialogowe nie pozwoli nam z nim nic zrobić do czasu aż nie wybierzemy jednej z opcji - &quot;Stwórz&quot; lub &quot;Anuluj&quot;.<br /><a href="http://forum.atnel.pl/_obrazki/o/4299/df82c4c86e014814240e17f201bd1f09.png"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/4299/df82c4c86e014814240e17f201bd1f09.png" alt="Obrazek" /></a><br /><br />3: Jak widać, wszystko przebiegło pomyślnie i moje przyciski aktywowały się.<br /><a href="http://forum.atnel.pl/_obrazki/o/4299/a65bfa80a080532fb7890d36cc57842c.png"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/4299/a65bfa80a080532fb7890d36cc57842c.png" alt="Obrazek" /></a><br /><br />4: Po naciśnięciu przycisku &quot;Wgraj obrazek&quot;.<br /><a href="http://forum.atnel.pl/_obrazki/o/4299/2dd52400e7bb4052d5b2e129773ae73e.png"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/4299/2dd52400e7bb4052d5b2e129773ae73e.png" alt="Obrazek" /></a><br /><br />5: Po naciśnięciu &quot;Dodaj podpis&quot;.<br /><a href="http://forum.atnel.pl/_obrazki/o/4299/1aabf68c142e3a9924a3225c86c631c0.png"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/4299/1aabf68c142e3a9924a3225c86c631c0.png" alt="Obrazek" /></a><br /><br />To by było na tyle. Był to mój pierwszy poradnik w życiu. Może się komuś przyda, może nie.<br />W związku z tym, że to moje pierwsze takie wypociny - Jakieś obiekcje? Coś jest nie jasne?<br />Będę wdzięczny za szczere wypowiedzi! Enjoy!<br /><br />Pozdrawiam, Maciek!<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4299">komandos332</a> — 25 cze 2015, o 18:58</p><hr />
]]></content>
</entry>
</feed>