Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.017 c
14-18559
Jiura32d
2003-09-18 20:31
2003.10.06
Дайте please компонент для предосмотра перед печатью!!!!


1-18334
BillyJeans
2003-09-23 16:43
2003.10.06
PageControl и ListView...


14-18641
NeyroSpace
2003-09-17 01:11
2003.10.06
Как все это запомнить????!!!!


4-18665
Delphi5.01
2003-07-31 19:09
2003.10.06
GetWindowText, GetNextWindow


1-18303
Delphi5.01
2003-09-21 20:28
2003.10.06
Kak vozmojno ubit potok v kotorom bezkanechni cikl?




   Наверх