Delphi2007 - agregator notatek

0

Witajcie
Słowo wstępu :P
Od dyplomu nie pisałem nic w delphi, ale ostatnio podczas porządków wpadła mi łapki wersja RC mojego dyplomu (zajmowałem się wtedy przetwarzaniem obrazów rastrowych) i zatęskniłem :)
Wpadł mi do głowy pomysł na podręczny program - taki agregator notatek, ufam że będziecie mnie w stanie pokierować na dalsze właściwe tory czy to zapodając pomysły, czy podając konkretne zagadnienia które muszę opanować.

Zatem.
Wymyśliłem sobie że program (jeden plik exe, plik pomocy) będzie umiejscowiony w swoim katalogu i będzie miał jeden podkatalog w którym będę chował notatki.
Notatki to pliki tekstowe - po jednym na notatkę.
Program w momencie uruchamiania sprawdza podkatalog w swojej lokalizacji i zlicza wszystkie pliki o określonym rozszerzeniu i zapisuje to pod jakaś zmienną globalną.
Jeśli nie ma żadnych plików to pokazuje labelka z "Welcome" i buton "utwórz notkę" po naciśnięciu takiego przycisku (każdorazowo) w obrębie formy będzie się tworzył komponent zdatny do pisania - powiedzmy, że Memo i każdy następny dodawany Memo ma układać się poniżej wcześniejszego.
Podobnie gdy po uruchomieniu program znajdzie pliki o określonym rozszerzeniu stworzy i rozłoży tyle komponentów ile znalazł plików.
Wymyślić łatwo, wiem że w grę wchodzi dynamiczne tworzenie komponentów ale takiego czegoś jeszcze nie znam, znaczy wiem jak stworzyć z góry określoną ilość komponentów, powiedzmy 4 gdy ich położenie na formie nie jest istotne bo służą do jakiegoś zabiegu "w tle". A tu trzeba będzie stworzyć x komponentów w pętli for x:=0 to iloscplikow -1 do.. i każdy ma mieć inny parametr pozycji top. tu leżę.
gdy już jest dość memo to program wczytuje zawartość plików do memo, jeden plik na jedno memo.
program ma globalny przycisk zapisu zawartości wszystkich memo do plików - jeden plik na memo i robi to też przy zamknięciu.
A teraz jak zliczyć pliki w "swoim podkatalogu" i jak stworzyć dynamicznie odpowiednia ilość pozycjonowanych Memo'ów i wsadzić do każdego zawartość innego pliku?
Czy na te Memo'a najlepiej było by robić ze startem dynamiczną tablicę (nazwapliku/numermemo/zawartość)?

0

Do wyszukiwania plików polecam http://www.torry.net/vcl/filedrv/search/wdfindf.zip natomiast co do tego
dynamicznego tworzenia komponentów to nie wiem w czym problem. W pętli możesz ustawiać Top i Left
jakie się Tobie zamarzy. Jeżeli obiektów ma być na przykład w lini po pięć to zaczynasz pętle od zera, a w
trakcie jej trwania robisz tak jak ja poniżej zrobiłem w swojej wersji gry "5x5" tworząc 25 Imagesów - czyli:

procedure TMainForm.TworzPustaPlansze;
var
  I : Byte;
  Img : TImage;
  PozycjaX, PozycjaY : integer;
begin
  LikwidujImage;
  PozycjaX := 10;
  PozycjaY := 10;

  for I := 0 to Max_Images -1 do
  begin
    Img := TImage.Create(MainForm);
    GenerujPustyImage(Img);
    Img.Parent := ScrollBox;
    Img.Name := Image_Nazwa + IntToStr(I+1);
    Img.Tag := 0;
    if (I > 0) and (I mod Images_W_Wierszu = 0) then
    begin
      PozycjaY := PozycjaY + Img.Height + Odstep_Pomiedzy;
      PozycjaX := 10;
      Img.Tag := 1;
    end;
    Img.Left := PozycjaX;
    Img.Top := PozycjaY;
    Img.ShowHint := False;
    PozycjaX := PozycjaX + Img.Width + Odstep_Pomiedzy;
  end;
end;
<delphi>
A jeżeli chcesz się odnieść do komponentów utworzonych dynamicznie (i nie tylko), to nadawaj im w pętli
sensowną nazwę tak jak w pętli powyżej, następnie możesz odszukać komponent i zrobić co chcesz - np:
<delphi>
procedure TMainForm.LikwidujImage;
var
  I : integer;
begin
  I := 1;
  repeat
    TImage(MainForm.FindComponent(Image_Nazwa + IntToStr(I))).Free;
    I := I + 1;
  until TImage(MainForm.FindComponent(Image_Nazwa + IntToStr(I))) = nil;
end;

</delphi></delphi>

0

Sorry coś strona padła w momencie dopisywanie postu i znalazł się on dwa razy. Jeszcze raz przepraszam ;)

0

Dzięki - drążę temat, jeszcze się odezwę :)

0

Zarzuciłem wszystkie prace nad tym pomysłem w momencie znalezienia programu "Mempad"

1 użytkowników online, w tym zalogowanych: 0, gości: 1