Конференция "Начинающим" » Самый нижний компонент на форме [D7, 2003]
 
  • lewka © (04.04.17 15:59) [0]
    Привет, мастера!
    Создаю динамически компоненты (компоненты разные и TLabel и TMemo и т.д.) на форме. Пользователи могут их в любом порядке добавлять.
    Подскажите, пожалуйста, как определить свойство Top у нижнего компонента, чтобы следующий добавленный компонент не накладывался на другие?
  • manaka © (04.04.17 17:26) [1]
    Зачем определять то, что известно?
    При добавлении нового запоминать его тор+высоту как "самого нижнего" (если конечно компоненты добавляются по вертикали, а не куда попало)
  • dmk © (04.04.17 17:29) [2]
    WinApi.GetWindow?
  • D7 (04.04.17 20:29) [3]
    Да, удобнее всего будет запоминать последнее использованное Bottom в какое-то поле подходящего класса (например вашего потомка TForm).
    А вообще можно циклом пройтись по всем контролам.
  • гений (05.04.17 07:09) [4]

    > Пользователи могут их в любом порядке добавлять

    наверняка и удалять. а значит есть некий механизм, а-ля ласткомпонент, ферсткомпонент,селектедкомпонент и т.д. чо в свою очередь означает, чо ничо запоминать не надо, уже запомнено.
  • anonims (05.04.17 09:39) [5]
    if self.controlcount>0 then botomcontrol:=self.controls[0] else bottomcontrol:=nil;
    for j:=self.controlcount-1 downto 1 do begin
     if self.controls[j].top + self.controls[j].hight > bottomcontrol.top + bottomcontrol.hight then bottomcontrol:=self.controls[j];

  • aka © (05.04.17 10:37) [6]
    BringToFront / BringToBack ?
  • гений (05.04.17 17:02) [7]

    > anonims   (05.04.17 09:39) [5]

    жуть-то какая. гонять цикл каждый раз.
 
Конференция "Начинающим" » Самый нижний компонент на форме [D7, 2003]
Есть новые Нет новых   [118642   +47][b:0][p:0.001]