Форум: "Основная";
Текущий архив: 2003.10.06;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.008 c