Главная страница
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.019 c
1-18413
webpauk
2003-09-24 14:12
2003.10.06
создание компонента


1-18352
Lionzi
2003-09-23 11:18
2003.10.06
Шрифт в memo


1-18455
alex-ran
2003-09-24 11:12
2003.10.06
Ограничение на количество компонентов дочерней формы?


4-18684
Delphi5.01
2003-08-01 20:33
2003.10.06
var Windows: array of HWnd; ... SetLength(Windows,WindowsCount);


6-18511
Григорий Ситнин
2003-08-06 17:08
2003.10.06
Broadcast