Witam, chcę zrobić terminarz w Delphi, 5 kolumn i 18 wierszy, 1 kolumna to godziny, zapiszę tam 18 godzin obecnego dnia, w pozostałych 3 kolumnach planuję opisywać ćwiczenia, krótkie notki tekstowe, liczbowe. Obecnie robię to w excelu, stąd moje pytanie dosyć ogólne, z czego mógłbym skorzystać aby taki terminarz wykonać i czy w miarę nie zaawansowany sposób mogę połączyć ten komponent z kalendarzem, proszę tylko napisać własne przemyślenia, spróbuję przestudiować to sam. Pozdrawiam.
Jeśli o listę chodzi, to możesz wykorzsytać TStringGrid
, TListBox
, TCheckListBox
czy TListView
; Wszystko zależy od efektu jaki chcesz uzyskać, więc OwnerDraw na pewno się przyda; Możesz rysować do woli, więc i do woli pomysłów; Nabezpieczniej było by wykorzystać TStringGrid
, ponieważ zapewni to gotową "siatkę" z obsługą klawiatury i myszy, a pozostawać będzie do zrobienia samo rysowanie; Ewentualnie jeśli chcesz megasuperhiper efekt uzyskać, to oprogramuj własną kontrolkę na bazie np. TCustomControl
lub podobnych;
Co do kalendarza to sytuacja jest podobna - albo gotowe (z pomocą znów przychodzi np. TStringGrid
), albo własne; Wszystko po raz koljeny zależy od oczekiwanego efektu; Gotowe kontrolki jak TCalendar
nie są jakieś super atrakcyjne, więc trzeba się zastanowić która kontrolka będzie Ci odpowiadać;
Dobrze by było jakbyś przedstawił sporządzony w dowolnym programie graficznym "zarys" kontrolek i formularza, żebyśmy wiedzieli jaki będzie docelowy efekt (namaluj coś np. w MS Paint) - wtedy będzie można coś doradzić.
Potrzebujesz TVirtualTreeView i nic więcej.
mam na myśli coś takiego jak w załączniku, zamiast id mam godziny, pozostałe to typy treningu i tu data jest jako pole, a spróbuję aby po kliknięciu na datę np w komponencie kalendarza który będzie obok treeview przechodziło do tego dnia, o ile to będzie dla mnie za skomplikowane pozostanę przy excelu.
@Michal90: taki efekt o ile się nie mylę jest raczej do uzyskania nawet na TListView
. Tylko wiadomo, własna obsługa rysowania. Plus tworzenie kontrolek w wierszach. Są na to przykłady w google. Wystarczy poszukac, pokombinować i zaadaptować kod na swoje potrzeby.
unit terminarz;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, Grids, Calendar, Spin;
type
TForm1 = class(TForm)
ListView1: TListView;
Calendar1: TCalendar;
SpinButton1: TSpinButton;
Label1: TLabel;
procedure SpinButton1DownClick(Sender: TObject);
procedure SpinButton1UpClick(Sender: TObject);
procedure Calendar1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.SpinButton1DownClick(Sender: TObject);
begin
Calendar1.PrevMonth;
end;
procedure TForm1.SpinButton1UpClick(Sender: TObject);
begin
Calendar1.NextMonth;
end;
procedure TForm1.Calendar1Click(Sender: TObject);
var
dzien, miesiac, rok: integer;
begin
dzien:=Calendar1.Day;
miesiac:=Calendar1.Month;
rok:=Calendar1.Year;
Label1.Caption:='Miesiac: ' + inttostr(miesiac) + ' Rok: ' + inttostr(rok);
end;
end.
Mam 1 pytanie, za chwilę sobie połączę kalendarz z tlistview tak aby po kliknięciu tworzyl sie czysty komponent wg szablonu do wypelniania, ale w jaki sposob to zapisywać?
TFileStream i zapisywać komponent?