Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.06;
Скачать: CL | DM;

Вниз

Chart и Splitter   Найти похожие ветки 

 
Катерина ©   (2003-09-22 17:11) [0]

Run-time я создаю форму и размещаю на ней неизвестное заранее кол-во графиков (Chart), разделенных Splitter`ами, чтобы можно было вручную регулировать высоту графиков:
procedure TForm_info.But_ChartClick(Sender: TObject);
Type ChartSplType = record Chart : TChart; Spl : TSplitter; end;
var ChForm : TForm;
Charts : array of ChartSplType;
i, k : integer;
ChHeight : integer;
begin
ChForm := TForm.Create(Owner);
ChForm.Position := poScreenCenter;
ChForm.Caption := "Графическая информация";
ChForm.Height := 480;
ChForm.Width := 640;

k := ord(chOts.Checked)+
ord(chEtv.Checked)+
ord(chH.Checked)+
ord(chD.Checked)+
ord(chG.Checked)+
ord(chAn.Checked);

SetLength(Charts,k);

ChHeight := (ChForm.Height-12) div k - 7;

for i := 0 to k-1 do
begin
Charts[i].Chart := TChart.Create(Owner);
Charts[i].Chart.Parent := ChForm;
Charts[i].Chart.Align := alTop;
Charts[i].Chart.Height := ChHeight;
Charts[i].Chart.Name := "Chart"+IntToStr(i);

Charts[i].Spl := TSplitter.Create(Owner);
Charts[i].Spl.Parent := ChForm;
Charts[i].Spl.Align := alTop;
Charts[i].Spl.Height := 5;
Charts[i].Spl.MinSize := 1;
Charts[i].Spl.Beveled := TRUE;
Charts[i].Chart.Name := "Spl"+IntToStr(i);
end;

ChForm.Show;

end;

Но у меня все Splitter`ы собираются вверху, а затем следуют Chart`ы. Хотя, если вручную собираю на форме компоненты, они так и располагаются, в каком порядке я их добавляю: Chart, Splitter, Chart, Splitter. Что нужно сделать, чтобы в run-time сохранялся этот же порядок?


 
ZEE ©   (2003-09-22 17:28) [1]

скорее не сохраняться, а задаваться должен порядок расположения

создавая их сначала оставляй Align=alNone
потом выстраивай компонентый как надо (Top/Left)
ну а после перебирай их последовательно (сверху вниз) и ставь Align=alTop

примерно так (вероятно можно и проще)


 
афвуд ©   (2003-09-22 17:31) [2]

Charts[i].Spl.MinSize := 1;
Charts[i].Spl.Beveled := TRUE;
Charts[i].Chart.Name := "Spl"+IntToStr(i);
end;

Здесь вот ошибочка, вместо Chart.Name надо Spl.Name. НО это наверно проблему не решит.

Знаешь, я писал конструктор форм, наподобие дельфовского, так у меня там всё нормально, как и в Дельфе, кладёшь Chart, потом Splitter, потом опять Chart ... и всё нормально показывалось.


 
BOA_KAA ©   (2003-09-22 17:43) [3]

На самом деле все очень просто:

ChForm := TForm.Create(Owner);
ChForm.Position := poScreenCenter;
ChForm.Caption := "Графическая информация";
ChForm.Height := 480;
ChForm.Width := 640;

ChForm.Show;

k := ord(chOts.Checked)+
ord(chEtv.Checked)+
ord(chH.Checked)+
ord(chD.Checked)+
ord(chG.Checked)+
ord(chAn.Checked);

SetLength(Charts,k);

ChHeight := (ChForm.Height-12) div k - 7;

for i := 0 to k-1 do
begin
Charts[i].Chart := TChart.Create(Owner);
Charts[i].Chart.Parent := ChForm;
Charts[i].Chart.Align := alTop;
Charts[i].Chart.Height := ChHeight;
Charts[i].Chart.Name := "Chart"+IntToStr(i);

Charts[i].Spl := TSplitter.Create(Owner);
Charts[i].Spl.Parent := ChForm;
Charts[i].Spl.Align := alTop;
Charts[i].Spl.Height := 5;
Charts[i].Spl.MinSize := 1;
Charts[i].Spl.Beveled := TRUE;
Charts[i].Chart.Name := "Spl"+IntToStr(i);
end;


 
BOA_KAA ©   (2003-09-22 17:47) [4]

Виноват, обмишурился :( Прогнал для одного раза
Так они внизу соберутся. :)



Страницы: 1 вся ветка

Текущий архив: 2003.10.06;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.027 c
6-18516
Maxim Pshevlotsky
2003-08-11 10:58
2003.10.06
Как выполнить поиск по FTP серверу?


1-18449
Pasha
2003-09-26 07:02
2003.10.06
почему это не работает???????


1-18377
k-sergey
2003-09-25 22:22
2003.10.06
Как изменить регистр РУССКИХ букв?


1-18458
Alexander1966
2003-09-24 16:29
2003.10.06
PACKED. struct packed в Pascal , а в С++?


3-18252
victor_ch
2003-09-14 14:26
2003.10.06
как работать с SQL-DMO