Ćwiczenie5, Sprawozdania, Instrukcje labolatoryjne


Okna komunikatów

Programista w Delphi ma do dyspozycji cały szereg okien komunikatów, które służą głownie do wymiany informacji pomiędzy użytkownikiem a systemem. Najprostszym sposobem porozumiewania się jest wyświetlenie informacji. Może do tego służyć następująca procedura:

ShowMessage (` Komunikat');

Wykonanie takiego rozkazu spowoduje wyświetlenie okna o następującym wyglądzie:

0x01 graphic

W przypadku tego typu okna użytkownik może jedynie kliknąć OK., nie ma możliwości wymiany informacji pomiędzy nim a systemem. W związku z tym, że okno komunikatów jest modalne przed wykonywanie dalszych czynności programu musi zostać ono zamknięte.

Okna dialogowe

Bardziej zaawansowana wymiana informacji pomiędzy użytkownikiem a systemem jest możliwa w przypadku zastosowania okna komunikatów, w którym użytkownik ma możliwość wyboru odpowiedzi. Umożliwia to funkcja: MessageDlg zwracająca wartość na podstawie której stwierdza się jaka opcję wybrał użytkownik.

Funkcja ta wymaga następujących parametrów:

Const Msg: string - napis wyświetlany w oknie komunikatu;

AType: TmsgDlgType - Rodzaj wyświetlanego okna dialogowego

Abuttons: TmsgDSlgButtons - Lista wartości definiujących przyciski obecne w oknie komunikatu, ujęta w nawiasy prostokątne.

HelpCtx: LongInt - Łącza do systemu pomocy, w naszym przypadku 0 oznacza brak łącza.

Wywołanie :

MessageDlg (`Czy naprawdę chcesz zakończyć program?', mtConfirmation, [mbYes, mbNo],0);

spowoduje wyświetlenie następującego okna komunikatów

0x01 graphic

Funkcja MessageDlg zwraca w tym przypadku wartość mrYes lub mrNo w zależności od wybranego przycisku. Można za pomocą tej samej funkcji wywołać również inne okna dialogowe. Ich rodzaje przedstawia tabela1.

Nazwa okna

Tytuł

Ikona jaką zawiera po wyświetleniu

MtConfirmation

Confirm (Potwierdzenie)

Znak zapytania

MtCustom

Nazwa pliku wykonywalnego

Brak symbolu

MtError

Error (Błąd)

Znak stop

MtInformation

Information (Informacja)

Litera „I”

MtWarning

Warning (Ostrzeżenie)

Wykrzyknik

Tabela 1

Do stosowanych okien możemy również dopasować odpowiednie rodzaje przycisków. Przyciski używane w oknach dialogowych przedstawia tabela2.

Nazwa przycisku

Napis na przycisku

MbAbort

Abort (Przerwij)

MbAll

All (Wszystkie)

MbCancel

Cancel (Anuluj)

MbHelp

Help (Pomoc)

MbIgnore

Ignore (Ignoruj)

MbNo

No (Nie)

MbYes

Yes (Tak)

MbOk

OK.

MbRetry

Retry (Ponów próbę)

Tabela 2

Odmianą funkcji MessageDlg jest funkcja MessageDlgPos, która wymaga dwóch dodatkowych argumentów całkowitych, definiujących współrzędne lewego górnego rogu okna komunikatu względem lewego górnego rogu ekranu.

Okna dialogowe do wprowadzania danych

Zastosowanie tego okna stanowi jeden z prostszych sposobów pobierania danych od użytkownika. Można je wywołać przez zastosowanie funkcji InputBox. Wywołanie następującej treści:

InputBox (`Wprowadzanie danych', `Podaj kolejny element:', `0')

powoduje pojawienie się okna o wyglądzie przedstawionym poniżej :

0x01 graphic

Komponenty edycyjne

Innym sposobem komunikowania się pomiędzy użytkownikiem a systemem jest wykorzystywanie komponentów edycyjnych.

Delphi udostępnia cztery komponenty kontrolek edycyjnych:

Komponent Edit

Komponent Edit realizuje prostą kontrolę edycji jednowierszowej. Nie posiada właściwości Align ani Alignment. W tej kontrolce tekst może być wyrównywany tylko do lewej strony.

Komponent MaskEdit

Komponent MaskEdit to komponent Edit z dołączonym filtrem wejściowym lub maską. Nie jest to nowa, standardowa kontrolka Windows ale rozszerzenie standardowej kontrolki edycyjnej. Maska stosowana jest w celu wymuszenia ograniczeń na ilość bądź format wprowadzanych znaków. Komponent EditMask ma wpływ na stosowaną maskę wprowadzania. Po kliknięciu wielokropka przy właściwości EditMask wyświetlony zostanie Edytor Maski Wprowadzania, w którym można wybrać jedną z istniejących masek lub utworzyć własną.

Komponent Memo

Komponent Memo realizuje wielowierszową kontrolkę edycyjną. Najbardziej znacząca właściwość tego komponentu to Lines, która umożliwia zapisywanie komponentu Memo na dysk, ładowanie do komponentu tekstu pochodzącego z pliku lub przetwarzanie każdej linii notatki osobno. Cechą szczególną tego komponentu jest właściwość ScrollBars, która określa czy komponent posiada pionowy, poziomy, czy oba paski przewijania.

Komponent RichEdit

Komponent RichEdit jest największym i najlepszym komponentem spośród wszystkich edycyjnych. Umożliwia zmianę czcionki, stosowanie wcięć, pogrubianie czcionki, stosowanie kursywy, podkreślanie i wiele innych opcji.

Właściwości standardowych komponentów edycyjnych:

Właściwości dostępne na etapie projektowania:

AutoSelect

Komponenty: Edit, MaskEdit

Właściwość ta ustawiona na True powoduje, że gdy użytkownik przejdzie do komponentu przez naciśnięcie Tab to edytowany tam tekst zostanie zaznaczony. Wartość domyślna True.

AutoSize

Komponenty: Edit, MaskEdit

Właściwość ta ustawiona na True powoduje automatyczną zmianę rozmiaru komponentu, jeżeli rozmiar używanej w jego wnętrzu czcionki ulegnie zmianie. Wartość domyślna True.

CharCase

Komponenty: Edit, MaskEdit

Właściwość ta w zależności od ustawienia określa czy wyświetla tekst składający się
z dużych znaków (ecUpperCase), małych znaków (ecLowerCase), mieszanych (ecNormal). Wartość domyślna ecNormal.

HideScrollBars

Komponent: RichEdit

Właściwość ta ustawiona na True powoduje wyświetlanie pasków przewijania tylko
w wypadku gdy zachodzi taka potrzeba, natomiast w pozostałych przypadkach są ukryte.
W przypadku wartości False obecność pasków przewijania zależy od wartości właściwości ScrollBars.

HideSelection

Komponenty: Edit, RichEdit, Memo

Właściwość ta ustawiona na True powoduje, że dowolny zaznaczony tekst przestanie być wyświetlany kiedy użytkownik przejdzie do innego komponentu za pomocą Tab. Wartość domyślna True.

Lines

Komponenty: RichEdit, Memo

Właściwość ta przechowuje tekst stanowiący zawartość komponentu.

MaxLength

Komponenty: Edit, MaskEdit, RichEdit, Memo

Właściwość ta określa maksymalną liczbę znaków jaką komponent jest w stanie pomieścić. W przypadku gdy podana jest wartość 0 liczba podawanych znaków jest jedynie ograniczona przez możliwości systemu. Wartość domyślna 0.

OEMConvert

Komponenty: Edit, Memo

Właściwość ta ustawiana jest na True jeżeli wprowadzany tekst będzie się składał z nazw plików. Wartość domyślna False.

PasswordChar

Komponenty: Edit, MaskEdit

Właściwość ta powoduje odwzorowanie wprowadzanego znaku na zadany jako wartość tej właściwości, jeżeli wartość zadana jest różna od ASCI #0. Większość kontrolek edycyjnych używa znaku * w roli znaku maskującego. Wartość domyślna #0.

PlainText

Komponent: RichEdit

Właściwość ta ustawiana na True powoduje, że pliki formatu RTF będą wyświetlane
w postaci zwykłego tekstu bez formatowania znaków i paragrafów. Przy ustawionej właściwości na False pliki będą wyświetlane z pełnym formatowaniem RTF. Wartość domyślna False.

ReadOnly

Komponenty: Edit, MaskEdit, RichEdit, Memo

Właściwość ta ustawiana na True blokuje modyfikacje wyświetlanego tekstu. Możliwe jest jedynie czytanie, zaznaczanie i kopiowanie tekstu do schowka.. Wartość domyślna False.

ScrollBars

Komponenty: RichEdit, Memo

Właściwość ta określa, które paski przewijania są wyświetlane. Możliwe wartości to: ssNone, ssHorizontal, ssVertical. Wartość domyślna ssNone.

Text

Komponenty: Edit, MaskEdit

Właściwość ta przechowuje tekst stanowiący zawartość komponentu.

WantReturns

Komponenty: RichEdit, Memo

Właściwość ta ustawiana na True powoduje, że po naciśnięciu klawisza Enter system przechwytuje znak powrotu karetki i powoduje wstawienie nowej linii do obszaru edycji.

W przypadku ustawienia wartości False naciśnięcie klawisza Enter jest obsługiwane przez Formularz. Wartość domyślna True.

WantTabs

Komponenty: RichEdit, Memo

Właściwość ta ustawiana na True powoduje, że po naciśnięciu klawisza Tab w obszarze edycji wstawiany jest znak tabulacji. W przypadku ustawienia wartości False powoduje przekazanie znaku do formularza co umożliwia opuszczenie kontrolki edycyjnej. Wartość domyślna False.

WordWrap

Komponenty: RichEdit, Memo

Właściwość ta ustawiana na True powoduje przeniesienie wpisywanego tekstu do nowej linii po osiągnięciu prawej krawędzi kontrolki. Wartość False powoduje, że kontrolka automatycznie przesuwa tekst w miarę wprowadzania nowych znaków. Wartość domyślna True.

Właściwości dostępne w czasie wykonywania

Modified

Komponenty: Edit, MaskEdit, RichEdit, Memo

Właściwość ta określa czy zawartość komponentu zmieniła się od momentu, kiedy właściwość ta została ustawiona po raz ostatni. Po zapisaniu zawartości komponentu Memo lub RichEdit do pliku właściwości tej powinno przypisać się wartość False.

SelLength

Komponenty: Edit, MaskEdit, RichEdit, Memo

Właściwość ta zawiera długość tekstu aktualnie zaznaczonego we wnętrzu komórki.

SelStart

Komponenty: Edit, MaskEdit, RichEdit, Memo

Właściwość ta zawiera indeks pierwszego znaku zaznaczonego tekstu. Pierwszy znak
w kontrolce ma indeks 0.

SelText

Komponenty: Edit, MaskEdit, RichEdit, Memo

Właściwość ta reprezentuje zaznaczony tekst.

Metody związane z kontrolkami edycyjnymi

Metody:

dotyczą operacji na Schowku i manipulowania tekstem.

Metody:

pobierają odpowiednio zaznaczony tekst komponentu oraz cały tekst komponentu.


Cel ćwiczenia

Celem ćwiczenia jest zapoznanie się ze sposobami oprogramowania komunikacji użytkownika z systemem. Ćwiczenie dotyczy zarówno sposobów podawania danych, jak również możliwości oprogramowania odpowiednich odpowiedzi i poleceń ze strony programu.

Przebieg ćwiczenia

  1. Zapoznanie się z podstawowymi oknami komunikatów i oknami dialogowymi.

  2. Zapoznanie się z podstawowymi kontrolkami edycyjnymi i ich właściwościami.

  3. Wykonanie następujących zadań:

Zadanie 1

  1. Utwórz katalog, w którym znajdą się pliki do tego projektu i uruchom Delphi. Na ekranie pojawi się okno projektu formularza o nazwie Form1.

  2. Za pomocą Inspektora Obiektów zmień właściwość Caption na własną. Aby to osiągnąć, zaznacz formularz, wybierz odpowiednią kartę w oknie inspektora obiektów, przewiń listę tak, by wyświetlić opcję Caption i kliknij ją. Tekst Form1 zastąp swoim.

  3. Umieść na formularzu dwa komponenty Button. Dla komponentu Button1 właściwość Caption zmień na Wprowadzanie danych, dla komponentu Button2 właściowość Caption zmień na Wyjście.

  4. Dodaj do formularza 5 komponentów Edit i 5 komponentóow Label i ustaw je na formularzu tak aby każde pole edycyjne mogło być odpowiednio podpisane.

  5. Dla pierwszego pola edycyjnego zmień właściwość Text na 0, a dla odpowiadającej mu etykiety właściwość Caption ustaw na Liczba elementów. To pole edycyjne będzie służyło do podawania ilości wprowadzanych elementów.

  6. Dla drugiego pola edycyjnego zmień właściwość Text na puste pole, a właściwość ReadOnly ustaw na True. Dla odpowiadającej mu etykiety właściwość Caption ustaw na Ostatnio wprowadzony. To pole edycyjne będzie służyło do wyświetlania ostatnio wprowadzonego elementu.

  7. Dla trzeciego pola edycyjnego zmień właściwość Text na puste pole, a właściwość ReadOnly ustaw na True. Dla odpowiadającej mu etykiety właściwość Caption ustaw na Maksymalny wprowadzony. To pole edycyjne będzie służyło do wyświetlania maksymalnego wprowadzonego elementu.

  8. Dla czwartego pola edycyjnego zmień właściwość Text na puste pole, a właściwość ReadOnly ustaw na True. Dla odpowiadającej mu etykiety właściwość Caption ustaw na Minimalny wprowadzony. To pole edycyjne będzie służyło do wyświetlania minimalnego wprowadzonego elementu.

  9. Dla piątego pola edycyjnego zmień właściwość Text na puste pole, a właściwość ReadOnly ustaw na True. Dla odpowiadającej mu etykiety właściwość Caption ustaw na Suma. To pole edycyjne będzie służyło do wyświetlania sumy wprowadzonych elementów.

  10. Dla komponentu Button1 oprogramuj zdarzenie OnClick wpisując pomiędzy begin i end procedury obsługującej to zdarzenie następujące instrukcje:

max:=0;

min:=0;

suma:=0;

liczba:=0;

if strtoint(edit1.text)> 0 then

begin

ile:=strtoint(edit1.text);

liczba:= strtofloat(inputbox('wprowadzanie danych', 'Podaj kolejną liczbę', '0'));

max:= liczba;

min:=liczba;

suma:=liczba;

if ile >1 then

for i:=2 to ile do

begin

liczba:= strtofloat(inputbox('wprowadzanie danych', 'Podaj kolejną liczbę', '0'));

suma:= suma + liczba;

if liczba > max then max:=liczba else

if liczba < min then min:= liczba;

end;

edit2.text:= floattostr(liczba) ;

edit3.text:= floattostr(max);

edit4.text:= floattostr(min);

edit5.text:= floattostr(suma);

end

else

showmessage(' musisz wprowadzić ilość elementów');

end;

  1. Należy pamiętać o konieczności zadeklaropwania odpowiednich zmiennych w procedurze. Po słowie kluczowym var dla procedury obsługi tego przycisku dodaj deklaracje:

ile, i: integer;

suma, liczba, max, min : single;

  1. Dla komponentu Button2 oprogramuj zdarzenie OnClick wpisując pomiędzy begin i end procedury obsługującej to zdarzenie następujące instrukcje:

If messageDlg(`Czy na pewno chcesz zakończyć program', mtConfirmation, [mbYes, mbNo], 0) = mrYes then Close;

  1. Zapisz wszystko (Save All) nadając poszczególnym plikom odpowiednie nazwy.

  2. Wybierz przycisk Run lub F9 i uruchom napisaną przez siebie aplikację.

Zadanie 2

Wykorzystując odpowiednie komponenty edycyjne i okna dialogowe napisz program obliczający średnią arytmetyczną.

Warunki zaliczenia

Warunkiem zaliczenia ćwiczenia jest rozwiązanie zadania podanego przez prowadzącego. Po zakończeniu pracy każdy program powinien zostać zapisany
w odpowiednim katalogu. Pliki zapisane w innym niż podany przez prowadzącego katalogu nie będą sprawdzane.

1

5



Wyszukiwarka

Podobne podstrony:
Ćwiczenie2, Sprawozdania, Instrukcje labolatoryjne
ćwiczenie7, Sprawozdania, Instrukcje labolatoryjne
Ćwiczenie6, Sprawozdania, Instrukcje labolatoryjne
Ćwiczenie11, Sprawozdania, Instrukcje labolatoryjne
Ćwiczenie8, Sprawozdania, Instrukcje labolatoryjne
Ćwiczenie10, Sprawozdania, Instrukcje labolatoryjne
Ćwiczenie1, Sprawozdania, Instrukcje labolatoryjne
Ćwiczenie4, Sprawozdania, Instrukcje labolatoryjne
Ćwiczenie3, Sprawozdania, Instrukcje labolatoryjne
Ćwiczenie2, Sprawozdania, Instrukcje labolatoryjne
Cwiczenie75, sprawozdania, Fizyka - Labolatoria, Ćwiczenie nr75
Ćwiczenie nr 50b, sprawozdania, Fizyka - Labolatoria, Ćwiczenie nr50b
Doświadczalne spr p. Malusa, sprawozdania, Fizyka - Labolatoria, Ćwiczenie nr70
Mechanika gruntów - Ćwiczenie 1 - Sprawozdanie 1, Budownictwo S1, Semestr III, Mechanika gruntów, La
Ćwiczenie nr 82, sprawozdania, Fizyka - Labolatoria, Ćwiczenie nr82
Ćwiczenie nr 65c, sprawozdania, Fizyka - Labolatoria, Ćwiczenie nr65c
Mechanika gruntów - Ćwiczenie 5 - Sprawozdanie 4, Budownictwo S1, Semestr III, Mechanika gruntów, La
SPRAWOZDANIE Z ĆWICZENIA POMIARY PROMIENIOWANIA LABOLATORIUM MASZYN I URZĄDZEŃ ENERGETYCZNYCH
Ćwiczenie nr 65, sprawozdania, Fizyka - Labolatoria, Ćwiczenie nr65

więcej podobnych podstron