Как я нахожу видимую часть управления?

Пожалуйста, попробуйте это:

SELECT d.ID,d.[Date],MIN(d.[Time]) AS [Time-in],MAX(d.[Time]) AS [Time-out]
    ,CASE WHEN MAX(d.[Time]) > '17:00:00' THEN CONVERT(TIME,CONVERT(DATETIME,MAX(d.[Time])) - CONVERT(DATETIME,'17:00:00')) ELSE NULL END AS [OT]
FROM (
    SELECT t.ID
        ,CONVERT(DATE,t.[Date]) AS [Date]
        ,CONVERT(TIME,t.[Date]) AS [Time]
    FROM [YourTableName] t
) d
GROUP BY d.ID,d.[Date]
;
5
задан Simon 7 May 2009 в 08:05
поделиться

2 ответа

AutoScrollPosition представляет расположение отображаемого прямоугольника прокручиваемого элемента управления. Полученные значения координат X и Y являются отрицательными, если элемент управления прокручивается от его начальной позиции (0,0). Когда вы устанавливаете это свойство, вы всегда должны назначать положительные значения X и Y, чтобы установить позицию прокрутки относительно начальной позиции. Например, если у вас есть горизонтальная полоса прокрутки и вы установили x и y на 200, вы переместите прокрутку на 200 пикселей вправо; если затем установить x и y равными 100, прокрутка, кажется, переместится влево на 100 пикселей, потому что вы устанавливаете его на 100 пикселей от начальной позиции. В первом случае AutoScrollPosition возвращает {-200, 0}; во втором случае возвращает {-100,0}.

Источник: MSDN: ScrollableControl. Свойство AutoScrollPosition

3
ответ дан 13 December 2019 в 05:41
поделиться

Я думаю, что метод GetVisibleRectangle, который я написал ниже, - это то, что вы запрашивали. Последовательные запуски этого с прокруткой дали следующий результат при прокрутке элемента управления:

  • {X = 0, Y = 0, Width = 0, Height = 0} - button4 был прокручен вне поля зрения. Обратите внимание, что значение здесь Rectangle.Empty .
  • {X = 211, Y = 36, Width = 25, Height = 13} - button4 был прокручен так, чтобы был виден верхний левый угол
  • {X = 161, Y = 36, Ширина = 75, Высота = 13} - кнопка 4 была прокручена так, что была видна верхняя половина и вся ширина
  • {X = 161, Y = 26, Ширина = 75, Высота = 23} - button4 был прокручен, чтобы быть полностью видимым

Обратите внимание, как в дополнение к изменениям ширины и высоты, X, Y также изменились при прокрутке.

Источник:

private void button1_Click(object sender, EventArgs e)
{
    Rectangle r = GetVisibleRectangle(this.panel1, button4);
    System.Diagnostics.Trace.WriteLine(r.ToString());
}

public static Rectangle GetVisibleRectangle(ScrollableControl sc, Control child)
{
    Rectangle work = child.Bounds;
    work.Intersect(sc.ClientRectangle);
    return work;
}
10
ответ дан 13 December 2019 в 05:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: