Programowanie w języku Delphi » Artykuły

Przydatne rzeczy

  • 2014-10-29 21:47
  • 10 komentarzy
  • 2705 odsłon
  • Oceń ten tekst jako pierwszy

Strona w budowie
Ktoś pracuje nad tą stroną, jej zawartość może się wkrótce zmienić. Prosimy o cierpliwość!



Kilka słów o przydatnych (po pewnym czasie wręcz niezbędnych) darmowych narzędziach do pomagania sobie w pracy w środowisku Delphi oraz BCB. W artykule tym postaram się przedstawić najważniejsze oraz najczęściej wykorzystywane funkcje ekspertów. Oczywiście są to subiektywne oceny i każdy może uważać za ważne całkiem inne opcje

Spis treści

     1 GExpert
          1.1 Procedure List (CTRL+G)
          1.2 Message Dialog (CTRL+D)
          1.3 Grep Search (SHIFT+CTRL+ALT+E) Grep Results (SHIFT+CTRL+ALT+R)
          1.4 Replace Componenets
          1.5 ASCII Chart
          1.6 Clipboard History
          1.7 Set Tab Order
          1.8 Backup Project
          1.9 Component Grid
          1.10 Components to Code
          1.11 Perfect Layout (CTRL+SHIFT+L)
          1.12 Podsumowanie
     2 CnPack
          2.1 Podsumowanie


GExpert


Link do strony głównej projektu GExpert: http://www.gexperts.org
Pełny opis możliwości można znaleźć pod adresem: http://www.gexperts.org/tour
Po zainstalowaniu dostajemy nowe menu obok menu Tools. Możemy w opcjach GExperta zmienić tak, aby jego menu było w menu Tools.


Procedure List (CTRL+G)




Jest to najważniejszy i najczęściej wykorzystywany nowy dodatek. Po uruchomieniu ww okienka (skrót CTRL+G lub z menu) mamy listę (po lewej stronie) wszystkich procedur w module. Są one podzielone na cztery grupy:

  • globalne (nie związane z żadną klasą)
  • przypisane do jakiejś klasy
  • konstruktory
  • destruktory
Po prawej stronie jest podgląd kodu wybranej procedury/funkcji natomiast na górze jest Edit, do którego wpisujemy nazwę (może być część) procedury lub funkcji, którą szukamy oraz możemy wybrać czy wyświetlone mają być wszystkie procedury/funkcje, czy tylko należące do konkretnej klasy. Jest to nieoceniona pomoc do szybkiego poruszania się po module, szczególnie jeśli jest w nim kilka klas.


Message Dialog (CTRL+D)




Jest to okno do wizualnego tworzenia okien dialogowych. Do wyboru mamy okna MessageDlg lub MessageBox. Oprócz treści wiadomości, ikonki oraz przycisków okna (dla MessageBox jeszcze tytułu okienka) możemy automatycznie obudować wywołanie okna w procedurę if, if not lub case. Po stworzeniu okna możemy zobaczyć jak będzie się ono prezentowało - służy do tego przycisk Test. Przykładowy kod wygenerowany przez Message Dialog wygląda następująco:

case MessageBox(0, 'Czy GExpert jest cool?', 'Pytanie', MB_ICONQUESTION or MB_YESNO) of
  idYes: ;
  idNo: ;
end;

Jedyna jego wada jest tak, że dla MessageBoxa za hWnd zawsze wstawia 0.


Grep Search (SHIFT+CTRL+ALT+E) Grep Results (SHIFT+CTRL+ALT+R)




Ten ekspert oferuje dość potężne narzędzie do wyszukiwania fraz w plikach. Tekst można szukać w:

  • bieżącym pliku (otwarty w IDE)
  • bieżącym projekcie
  • bieżącej grupie projektów
  • aktualnie otwartych plikach
  • dowolnym katalogu
Można też używać wyrażeń regularnych, oraz włączać do przeszukiwania pliki form (DFM/XFM). Jego przewaga nad standardowym wyszukiwaniem ujawnia się po rozpoczęciu wyszukiwania. Wszystkie wyniki dostajemy w osobnym oknie, które możemy przywołać w dowolnej chwili.



Jak widać na obrazku, mamy tu listę plików, w których została znaleziona szukana fraza, w ilu miejscach występuje ona w poszczególnych plikach oraz w której linii. Dodatkowo po kliknięciu na konkretny wynik wyszukiwania ukazuje się nam kawałek kodu, w którego otoczeniu jest szukana fraza.

Jeśli klikniemy dwukrotnie na konkretny wynik, zostaniemy przeniesieni do IDE do miejsca, w którym znajduje się znaleziona fraza.

Replace Componenets




Załóżmy, że mamy już dosyć rozbudowaną aplikację (kilkadziesiąt form, średnio 30 - 50 komponentów na formie) i teraz wpadliśmy na pomysł aby po uaktywnieniu Edita zmieniał on kolor (taka właściwość, która pozwoli użytkownikowi szybciej zorientować się, która kontrolka jest aktywna). Najprościej napisać nowy komponent na bazie TEdit z dodatkową metodą FocusedColor oraz obsługa zdarzeń DoEnter i DoExit. Ok, mamy już nowy komponent ale podmieniać ręcznie wszystkie Edity na MyEdity na kilkudziesięciu formach to niezbyt przyjemna praca.  

Z pomocą przychodzi nam polecenie Replace Componenets. Jak widać na obrazku, wybieramy typ "źródłowy" oraz typ "docelowy", potem czy zamiana ma być tylko w zaznaczonych komponentach, na aktywnej formie czy w całym projekcie. Zaznaczamy w całym projekcie i wciskamy OK. Całą syzyfową prace mamy za sobą. Właściwości, które się pokrywały zostają niezmienione. Właściwości, których nie miał "stary" komponent, nowy ma ustawione na default.


ASCII Chart




Jest to prosta tablica kodów ASCII. Ma możliwość wyświetlenia pełnej palety 256 znaków (jednak w danym momencie może wyświetlać albo pierwsze 128 znaków albo drugie). Możemy też zmienić sposób wyświetlania kodów znaków (dziesiętnie lub szesnastkowo).
Po kliknięciu w dany znak jest on dodawany do Edita, z którego następnie możemy skopiować wszystkie dodane tam znaki.


Clipboard History




Pozwala zobaczyć jaki tekst był kopiowany do systemowego Schowka. Można następnie ten tekst wkleić wprost do IDE lub skopiować do Schowka. W opcjach możemy min. określić ile wpisów ma pamiętać ten ekspert.

Ekspert ten wyłapuje i przechowuje jedynie standardowy tekst (ASCII) kopiowany do schowka, nie większy jednak niż 512KB. Nie śledzi operacji kopiowania np. bitmap czy komponentów.

Set Tab Order




Wyświetla oraz umożliwia zmianę Tab Order (czyli kolejność aktywacji komponentów po naciskaniu klawisza TAB) na aktywnej formie. Jego zaletą w stosunku do standardowego okna jest to, że bierze on pod uwagę wszystkie komponenty a nie jedynie te leżące bezpośrednio na wybranym komponencie.

Ekspert ten nie zmienia właściwości TabStop i ignoruje (nie wyświetla) komponentów, które nie posiadają właściwości TabOrder

Backup Project




Umożliwia wykonanie kopi zapasowej (backup) w formie archiwum zip plików aktywnego projektu lub całej grupy projektów. Dodatkowo ustawiając odpowiednie opcje może też przeszukiwać pliki źródłowe (pas, dpr, cpp) w poszukiwaniu dyrektyw, które dołączają pliki do projektu (np. $R, $I). Możemy także ustawić aby ekspert nie pytał nas o nazwę pliku wynikowego tylko generował ją automatycznie, np. na podstawie nazwy projektu czy też aktualnej daty i czasu (spis wszystkich makr można znaleźć w pomocy lub na stronie programu).


Component Grid




Kolejny przydatny ekspert, który nieco ułatwia nam poruszanie się wśród komponentów znajdujących się na aktywnej formie. Szczególnie przydatny jest przy dużej ilości komponentów, kiedy staramy się tworzyć nasze programy przyjazne dla użytkownika, tzn dodajemy podpowiedzi (hinty) oraz pomoc kontekstową dla co ważniejszych elementów interfejsu. Co więc takiego daje nam ten ekspert? - ekspert ten zbiera wszystkie komponenty (wizualne i niewizualne) w jednym miejscu wraz z ich właściwościami Tag, HelpContext oraz Hint w zgrabną tabelkę, dodatkowo wyświetlając dla każdego komponentu jego rodzica.


Components to Code


Ekspert ten znajdzie zastosowanie wszędzie tam, gdzie chcemy lub jesteśmy zmuszenie zmienić sposób generowania komponentów ze statycznego na dynamiczny. Jak on działa? - mając na formie komponenty, które musimy usunąć i utworzyć dynamicznie po prostu zaznaczamy je i uruchamiamy tą opcję. W schowku dostajemy gotowy kod tworzenia takiego komponentu wraz ze wszystkimi właściwościami, które miał on zmodyfikowane. Dla przykładu podam kod, który powstał po wywołaniu tej opcji dla przycisku:

var
  btnOptions: TBitBtn;
 
  btnOptions := TBitBtn.Create(Self);
  with btnOptions do
  begin
    Name := 'btnOptions';
    Parent := pnlInfo;
    Left := 320;
    Top := 32;
    Width := 89;
    Height := 25;
    Caption := '&Opcje';
    TabOrder := 1;
    OnClick := btnOptionsClick;
  end;

Można tak generować kod dla pojedynczych komponentów jak i ich grup.


Perfect Layout (CTRL+SHIFT+L)


Po ustawieniu sobie okienek odpowiednio do naszych wymagań możemy to ustawienie zapisać (w opcjach eksperta) i jeśli cokolwiek zmieni nam ustawienia okien (np. wczytanie obcego projektu) to wystarczy przywołać ww. kombinacje klawiszy i okienka powrócą do naszego ustawienia. W brew pozorom, jeśli lubimy mieć okienka po swojemu ta opcja przydaje się dość często.


Podsumowanie


GExpert ma więcej ekspertów, jednak te które tu przedstawiłem są najczęściej wykorzystywane przeze mnie. Oczywiście nie da się poznać pełnej jego mocy nie instalując go i nie używając. Tego nie zapewni nawet najlepszy i najobszerniejszy opis. Zapewniam Was, że na komputerze z Delphi pierwsze co robię to instaluję GExperta - bez niego jak bez ręki :)


CnPack


Link do strony głównej projektu CnPack http://www.cnpack.org
Po zainstalowaniu dostajemy nowe menu obok menu Tools. Możemy w opcjach CnPack zmienić tak, aby jego menu było w menu Tools.


Podsumowanie


Jak można zauważyć część funkcjonalności GExpert i CnPack się pokrywa, jednak nie wszystkie. Dlatego ciężko jest powiedzieć, że któryś z nich jest lepszy bądź, że któryś z nich ma większą funkcjonalność. Z tego też powodu jeśli ktoś ma zainstalowane oba to ciężko mu będzie pozostać przy tylko jednym.

10 komentarzy

bordeux 2007-08-17 17:22

A mi sie spodobało MessageDlg('sdfdsf', mtError, [mbYes, mbNo, mbOK, mbCancel, mbAbort, mbRetry, mbIgnore, mbAll, mbNoToAll, mbYesToAll, mbHelp], 0);
 Troche buttonów. Ale niestety nie przyda sie mi to :( uzywam notepad++

no_solution_found 2007-08-17 13:15

mi się bardzo spodobało a zwłaszcza Message Dialog oraz Procedure List :)

AklimX 2006-08-22 07:46

ja bym proponował coś jak "GExpert - narzędzie, które pozwala pracować szybciej", bo samo GExpert nic nie mówi

Jojersztajner 2006-08-12 15:13

@Misiekd - może po prostu ?GExpert?? Chyba, że planujesz dodanie tutaj innych narzędzi...

// dopisane
@Morris - obawiam się, że to niemożliwe - zgłaszam na usterkownię

Morris 2006-08-12 14:48

A może ktoś podmienić obrazki? Chodzi mi o te małe (ikonki z "Procedure list") - są źle przycięte...

Misiekd 2006-08-12 12:38

no ale nie mam pomysłu na nazwę :/
może "Bez experta jak bez ręki"? - co o tym sądzicie?

brodny 2006-08-11 19:41

Ciekawy pomysł na artykuł :) Czekam na dalsze przydatne bajery :)

Jojersztajner 2006-08-11 07:26

Kliknij ?Przenieś? i zmień.

Sam nie zmieniłem, bo nie miałem pomysłu na lepszą nazwę...

Misiekd 2006-08-11 04:11

a jak zmienić nazwę arta :>

Wolverine 2006-08-08 10:56

Proponuje zmienic nazwe arta na jakies "Narzedzia" czy cos w tym stylu bo aktualna nic nie mowi. Ale sam pomysl fajny :)