Quix Quix Quix Quix

CodeZone   Projektowanie stron PHP WebPage Editor Forum Kontakt

Aktualności

Artykuły

Kursy

Download

Literatura

Linki

Pomoc

Login:

Hasło:

Literatura

Nowości

Aktualizacja 27-01-2007

Rzutowanie z 3d na płaszczyznę 27-01-2007

Obrót w 2d 27-01-2007

Szyfrowanie hasłem 27-01-2007

Wykresy funkcji 27-01-2007

Zamiana obrazków 19-08-2006

Lista 03-08-2006

Hello World 2.0 03-08-2006

Automatyczne wysyłanie formularza 03-08-2006

Animowanie wyświetlania tekstu 03-08-2006

PHP WebPage Editor

Najnowsza wersja: 3.2
Aktualizacja: 27.01.2007

Ściągnij

Ostatnio na forum

php.exe 18-02-2010

Kilka propozycji 24-04-2009

Konstruktor i zwracanie wartości 22-03-2009

formularz 29-06-2008

formularz 29-06-2008

Premiera PHP WebPage Editora 3.0 20-08-2007

utf-8 22-06-2007

Mapa odsyłaczy 20-06-2007

Możliwość zapisywania przez FTP 20-06-2007

problem 25-04-2007

->CodeZone->Kursy->Delphi->Część 2 - Używanie komponentów D...->Lista

Lista

03-08-2006

Tym razem programem do napisania jest lista elementów. Do tego celu wykorzystamy komponent o nazwie "listbox". Program musi pozwalać na dodawanie elementów listy. Dodatkowo będzie miał także prostą opcję zapisywania listy na dysku.

Na formularzu umieszczamy następujące komponenty: 5xTButton, 1xTListbox, 1xTEdit

Wszystkim przyciskom stworzymy zdarzenia OnClick.

Pierwszy button będzie odpowiadał za zamknięciu programu czyli po prostu wykona "close;".

Najistotniejszym elementem będzie jednak oczywiście listbox, a konkretnie pole listbox.items, które jest obiektem typu tstrings czyli listą stringów. Każdy string z tej listy odpowiada jednemu wierszowi widocznemu w programie.

Stwórzmy zatem metodę onClick dla przycisku który nazwiemy "dodaj" który będzie do listy dodawał tekst wpisany do TEdit

listbox1.items.add(edit1.text);
edit1.text:='';


czyli po polsku: korzystamy z metody dodaj (add), której parametr jest łańcuchem znaków. W naszym przypadku używamy tekstu wpisanego do pola edycyjnego. Po dodaniu czyścimy pole edycyjne.

Żeby usunąć element potrzebna jest pętla sprawdzająca wszystkie elementy i kasująca te, które są zaznaczone


var i:integer;
...
for i:=listbox1.items.count-1 downto 0 do
  if listbox1.selected[ i ] then listbox1.items.delete(i); {jeżeli element i jest zaznaczony to go kasuj)

właśność count zwraca ilość elementów w obiekcie TStrings. Od tej liczby odejmujemy 1 ponieważ indeksy elementów zaczynają się od zera.
Bardzo ważne aby usuwając elementy z jakichkolwiek list robić to od końca czyli przeglądać elementy od ostatniego do pierwszego za pomocą "downto" zamiast "to". Gdbyśmy korzystali z "to" po usunięciu k-tego elementu wszystkie następne automatycznie przechodzą w górę zatem zmieniają sie ich indeksy. Co za tym idzie dotychczasowy k+1 element bedzie miał index k, natomiast w kolejnym przebiegu pętli będziemy się odwoływać do elementu o indeksie k+1 czyli dotychczasowego k+2, istnieje więc ryzyko, że pewne elementy zostaną pominięte w sprawdzaniu a także że wystąpi niedozwolona próba odczytu danych z elementu który już nie istnieje, i będzie większe od ilości elementów minus 1. W przypadku użycia downto usnięcie k-tego elementu oczywiście że na k pozycję wskoczy k+1, ale ponieważ sprawdzaliśmy od końca, to ten element został już sprawdzony i bez obaw mozna przejść do sprawdzania wcześniejszego.

Ostatnie 2 przyciski które nam zostały do zaprogramowania będą służyć odczytowi i zapisowi do pliku linii z listboxa. Okazuje się że nie jest to nic trudnego ponieważ klasa tstrings oferuje metody loadfromfile i savetofile, które przyjmują jako argument nazwę pliku. Wystarczy więc stworzyć zdarzenia dla przycisków i wpisać odpowiednio:

listbox1.items.savetofile('lista.txt');

oraz
listbox1.items.loadfromfile('lista.txt');

<< Poprzedni   Powrót  

Powered by Quix CMS

0.0025 0.0079 0.0082 0.0110 0.0112 0.0211