Dziś napiszemy pierwszą formatkę, na której umieścimy przykładowe komponenty. Na początku krótkie omówienie struktury programu. Skrypty podzielone są na funkcjonalne bloki, które odpowiadają za zarządzanie całością.
use Win32::API;
use Win32::GUI();
use Encode;
Dołączamy moduły, niezbędne do działania programu. Tekst programu został zapisany w stronie kodowej Win-1250. Formatka powinna wyświetlić prawidłowo znaki kodowe.
# Tworzenie okna oraz jego zapis w zmiennej $głowne
my $glowne = Win32::GUI::Window->new(
-name => 'Main',
-width => 300,
-height => 300,
-text => "Portal http://PerlGtk.pl",
);
Tworzymy okno, określamy właściwości, umieszczamy w określonym miejscu na pulpicie.
# Dodanie etykiety do okna
# zaczynając od lewej strony tego okna
$glowne->AddLabel(
-text => "Witaj Świecie",
);
Dodajemy do okna etykietę, z lewej strony oraz definiujemy tekst etykiety.
# Pokaż nasze okno na ekranie
$glowne->Show();
Najwyższy czas pokazać Nasze okno na pulpicie.
# Wprowadź nasze okno w pętlę obsługi
# zadań, która jest w fazie dialogu
Win32::GUI::Dialog();
Okno musi pracować w pętli, aby odbierać zadania od różnych nadawców, obsłużyć prawidłowo nasłuch.
# Poprawne zakończenie programu
# Return -1 to zakończenie programu
# poprzez powrót do programu który go wywołał
sub Main_Terminate {
return -1;
}
Dobrze jest powrócić z kodem sukcesu po zakończeniu działania Naszej aplikacji. Przykład ten jest ilustracją najbardziej podstawowych elementów GUI. Teraz chcielibyśmy położyć na formatce inne komponenty, dostępne w bibliotekach. Konieczna staje się obsługa związana z działaniem przeprowadzanym na komponentach, czyli wykonywaniem akcji z ich udziałem.
use strict;
use warnings;
use Win32::API;
use Win32::GUI();
use Encode;
Deklaracja standardowych bibliotek, które umożliwią działanie GUI.
my $dos = Win32::GUI::GetPerlWindow();
Win32::GUI::Hide($dos);
Pobierz środowisko wywołania i ukryj okno DOS w trakcie działania aplikacji.
my $glowne = Win32::GUI::Window->new(
-name => 'Main',
-title => 'Zestawienie informacji',
-left => 100,
-top => 100,
-width => 600,
-height => 400,
);
$glowne->AddLabel(-text => "testowa formatka dla Potrzeb portlau Perlgtk.pl");
my $numer = $glowne->AddTextfield(
-name => "Numer",
-left => 150,
-top => 50,
-width => 30,
-height => 20,
-prompt => "Numer Pracownika:",
);
my $nazwisko = $glowne->AddTextfield(
-name => "Nazwisko",
-left => 150,
-top => 80,
-width => 100,
-height => 20,
-prompt => "Nazwisko Pracownika:",
);
my $imie = $glowne->AddTextfield(
-name => "Imie",
-left => 150,
-top => 110,
-width => 100,
-height => 20,
-prompt => "Imię Pracownika:",
);
my $przycisk = $glowne->AddButton (
-name => "Akceptacja",
-left => 150,
-top => 300,
-width => 60,
-height => 40,
-flat => 1,
-text => 'Akceptuj',
);
$przycisk = $glowne->AddButton (
-name => "Czysc",
-left => 250,
-top => 300,
-width => 60,
-height => 40,
-flat => 1,
-text => 'Czyść',
);
my $combo = $glowne->AddCombobox(
-name => "Zestaw",
-left => 150,
-top => 200,
-width => 80,
-height => 20,
-dropdown => 1,
);
$combo->Add("Kowlaski","Burak","Pietruszka","Marchewka");
my $data_time = $glowne->AddDateTime(
-name => "Data",
-left => 250,
-top => 200,
-width => 80,
-height => 20,
);
my $listb = $glowne->AddListbox(
-name => "Listb",
-left => 350,
-top => 200,
-width => 80,
-height => 80,
-multicolumn => 1,
);
$listb->Add("Kowlaski","Burak","Pietruszka","Marchewka");
Tworzymy komponenty, ustalamy ich pozycje, wartości początkowe oraz nazwy.
sub Akceptacja_Click {
print "Portal Perlgtk.pl!\n";
}
sub Czysc_Click {
$numer->SelectAll();
$nazwisko->SelectAll();
$imie->SelectAll();
$numer->Clear();
$nazwisko->Clear();
$imie->Clear();
}
Nadajemy im możliwość obsługi. Jeśli wpiszemy coś w pola tekstowe, to klikając lewym przyciskiem myszki na komponent przycisku o nazwie Czyść, zawartość pól tekstowych zostanie wyczyszczona. Jeśli wybierzemy przycisk Akceptuj, to otrzymamy tekst w oknie shella.
Po zakończonej aplikacji, chcielibyśmy otrzymać z powrotem, nasze okno shella. Skrypty dostępne są w Naszym portalu na stronie.... Podgląd aplikacji dostępny jest na tej stronie...
|