Przydatne rzeczy

Misiekd
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

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.13 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)

Procedure List1.PNG

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ą) pl1.PNG
  • przypisane do jakiejś klasy pl2.PNG
  • konstruktory pl3.PNG
  • destruktory pl4.PNG
    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)

Message Dialog.PNG

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)

grep search.png

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.

grep results.png

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

Replace components.PNG

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

ASCII Chart.PNG

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

clipboard history.png

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

set tab order.png

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

Backup_project.png

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

Component_Grid1.png

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

@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ę

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++

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

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

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

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

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

Kliknij ?Przenieś? i zmień.

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

a jak zmienić nazwę arta :>

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