Kilka pytań związanych z DateTimePicker i plikami

0

Witam

Pytanie 1: Mam na formie 3 edity i DateTimePicker pokazującego date w formacie yyyy MMMM dd. Czy da się (a jeśli tak to jak) rozdzielić tę datę (np. po kliknięciu przycisku) tak, by w jednym edicie był rok, w drugim miesiąc, a w 3 dzień?

Pytanie 2: Mam na formie powiedzmy 10 komponentów memo (ustawionych np jeden pod drugim), a obok każdego po 1 labelu. Mam również folder w którym znajdują się różne pliki m.in txt. (ilość plików txt jest mniejsza badz równa ilości memo). Jak zrobić by (np. po kliknięciu przycisku) pliki txt wczytały się do memosów (każdy do innego (najlepiej alfabetycznie, to znaczy według nazwy)), a ich nazwy (plików) znalazły się w labelu obok odpowiedniego memosa.

0
  1. jest taka możliwość

  2. FindFirst + FindNext + FindComponent

0

1 DecodeDate/EncodeDate + F1

0

No tak ale to zamiast miesiąca "słownego" pokaże mi go w postaci liczbowej. Chciałbym by to wyglądało dokładnie jak w w tym DateTimePicker (uwzględniając możliwość zmiany wyświetlanego formatu).

A co do drugiego pytania to domyślałem się iż trzeba bedzie zastostowac FindFirst, Next itp. gdyż to najczesciej pojawia sie w odpowiedziach na temat wyszukiwania plików. Jednak nie za bardzo wiem jak zastosować to w moim przypadku.

0

Ad1. Trzeba ręcznie zamienić liczby na nazwy miesięcy.
Ad2.:

procedure Form1.Button1Click(Sender: TObject);
var
  Dir:string;
  SR : TSearchRec;
  Found,I: Integer;
begin
   Dir:='C:\folder\';
   I:=1;
   Found := FindFirst(Dir + '*.txt', faAnyFile, SR);
   while ( Found = 0 ) do begin
     TMemo(Form1.FindComponent('Memo'+IntToStr(I))).Lines.LoadFromFile(Dir+SR.Name);
     TLabel(Form1.FindComponent('Label'+IntToStr(I))).Caption:=Dir+SR.Name;
     I:=I+1;
     Found := FindNext(SR);
   end;
   FindClose(SR);
end;
0

Ad1. Trzeba ręcznie zamienić liczby na nazwy miesięcy.
Nie trzeba

var
Miesiac: Integer;
Nazwa: string;
begin
Miesiac := 1; //przykładowo styczeń
SetLength(Nazwa, 30);
SetLength(Nazwa, GetLocaleInfo(LOCALE_USER_DEFAULT,
LOCALE_SMONTHNAME1 - 1 + Miesiac, PChar(Nazwa), 30);
ShowMessage(Nazwa);
0

Bądź co bądź nie jest to jakaś funkcja typu

IntToMonths(Num:Byte):string;

:-D
A jak sam napisze to będzie to niezależne od wersji językowej systemu [!!!]

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