Логин: Пароль:    Регистрация Всеми возможностями сайта можно пользоваться
только после авторизации.
   Забыли пароль?

Поиск
L



Статистика
u
Пользователи онлайн: нет
Гостей онлайн: 2
Всего онлайн: 2
Зарегистрировано юзеров: 6705
Комментариев на сайте: 651
Новый юзер: RavBroaft



Последние комментарии
c
Rodneyhef прокомментировал "Урок 53 - Потоки в Delphi, (часть 1/3)":
Zauważże, czym cechują się kredyty na sześcdziesięciu dni. Jako co zwrócić uwagę podczas asortymentu oferty? Które firmy użyczają chwilówek za taki czas? Sprawdź! [url=https://chwilowki-pozyczka.pl/]chwilówki[/url] [url=https://chwilowki-pozyczka.pl/chwilowki-online]chwilówki online[/url] [url=https://chwilowki-pozyczka.pl/pozyczki-na-raty]pożyczki ratalne[/url] [url=https://chwilowki-pozyczka.pl/kredyty-gotowkowe]kredyty gotówkowe[/url] Zdecydowana większość pożyczek krótkoterminowych udzielana jest od okres nie zaakceptować dłuższy niźli dwa miesiące. Krótki słowo spłaty wydaje się być charakterystyczny na rzecz tego rodzaju wytworów finansowych. Firmy pożyczkowe wprowadziły także zastrzeżenia, skutkujące tym, że nie każdy klient będzie mógł momentalnie zaciągnąć wzięcie pożyczki na 60 dni. W poniższym artykule podpowiadamy, na jak zwrócić uwagę, postanawiając się pod ten typ dofinansowania, na czym polegają opisane ograniczenia, oraz pokazujemy, które obecne na rynku firmy użyczają pożyczek dzięki 60 dni. chwilowki-pozyczka.pl Termin kredyty jest jednym z kluczowych składników mających bezpośredni wpływ jako całkowite koszty zobowiązania. Alternatywa krótszego czy dłuższego sezonu ma przełożenie na wysokość RRSO, innymi słowy rzeczywistej rocznej stopy oprocentowanie informującej nas w stosunku procentowym o kosztach związanych z pożyczką. Jest to pierwszy element, na który trzeba zwrócić szczególną uwagę w chwili wyboru możliwości. Drugim elementem jest uważna ocena spersonalizowanych możliwości kredytowych, co koniecznie musi towarzyszyć zaciąganiu jakiegokolwiek zobowiązania. Być może będziemy potrzebować produktu finansowego, którego spłata wydaje się znacznie dłuższa. Wówczas winniśmy zdecydować się jako pożyczki od raty. Warto również stwierdzić o aplikowanych przez spółki pożyczkowe ograniczeniach, wynikających spośród realizacji strategii ryzyka. Ochraniając się zanim niewypłacalnością pożyczkobiorców, instytucje finansowe przedłożyły szereg wielu ograniczeń, oddanych w szczególności dla osób nowych odbiorców. Ci pożyczkobiorcy, którzy zaciągają chwilówkę na raz 1 w podanej firmie, niejednokrotnie nie mogą liczyć na termin dłuższy niźli 30 dni. Poza tym wiążą ograniczenia szczególne dla kredytów krótkoterminowych. Przemówienie między innymi na temat weryfikacji petentów w charakteryzujących się ogromną popularnością rejestrach dłużników, ukończenie 21. roku egzystencji czy identyfikacja maksymalnej poziomie pożyczki. Pożądane byłoby podkreślić, hdy znaczna część przedsiębiorstw nie udziela pożyczek o dłuższym okresie w ogóle, co ponadto nie jest rezultatem wprowadzenia ograniczeń, a wynika po prostu wraz z oferty.
dealrattKi прокомментировал "Урок 3 - Конструкция IF...THEN...ELSE":
Это действительно радует меня. --- Бесподобное сообщение скачать fifa, скачать фифа а также [url=http://15fifa.ru/novosti-fifa-15]fifa 15 последние новости[/url] скачать фифа

Липкие окошки

В статье рассматривается приём создания обработчиков сообщений, которые позволяют форме при перетаскивании "прилипать" к краям экранной области.

Конечно же в WinAPI такой возможности не предусмотрено, поэтому мы воспользуемся сообщениями Windows. Как нам известно, Delphi обрабатывает сообщения через события, генерируя их в тот момент, когда Windows посылает сообщение приложению. Однако некоторые сообщения не доходят до нас. Например, при изменении размеров формы генерируется событие OnResize, соответствующее сообщению WM_SIZE, но при перетаскивании формы никакой реакции не происходит. Конечно же форма может получить это сообщение, но изначально никаких действий для данного сообщения не предусмотрено.

Итак, при перемещении окну посылается сообщение WM_MOVING. Обрабатывая данное сообщение, приложение может отслеживать размер и расположение перетаскиваемого квадрата и при необходимости изменять их.

Также существует сообщение WM_WINDOWPOSCHANGING, которое посылается окну в случае, если его размер, расположение или место в Z-порядке собираются измениться, как результат вызова функции SetWindowPos либо другой функции управления окном.

Чаще всего с сообщением передаются дополнительные параметры, которые сообщают нам необходимую информацию. Например, сообщение WM_MOVE, указывающее на то, что форма изменила своё местоположение, также передаёт в параметре LPARAM новые координаты X и Y.

Сообщение WM_WINDOWPOSCHANGING передаёт нам только один параметр - указатель на структуру WindowPos, которая содержит информацию о новом размере и местоположении окна. Вот как выглядит структура WindowPos:

TWindowPos = packed record 
  hwnd: HWND; {Identifies the window.} 
  hwndInsertAfter: HWND; {Window above this one} 
  x: Integer; {Left edge of the window} 
  y: Integer; {Right edge of the window} 
  cx: Integer; {Window width} 
  cy: Integer; {Window height} 
  flags: UINT; {Window-positioning options.} 
end;
Наша задача проста: нам необходимо, чтобы форма прилипла к краю экрана, если она находится на определённом расстоянии от него (допустим, 20 пикселей).

Пример

К новой форме добавьте Label, один Edit и четыре Checkbox. Измените имя Edit на edStickAt. Измените имена чекбоксов на chkLeft, chkTop, и т.д. Для установки количества пикселей используем edStickAt, который будет использоваться для определения необходимого расстояния до края экрана, достаточного для приклеивания формы.

Нас интересует только одно сообщение - WM_WINDOWPOSCHANGING. Обработчик для данного сообщения будет объявлен в секции private. Ниже приведён полный код этого процедуры "прилипания" вместе с комментариями. Обратите внимание, что Вы можете предотвратить "прилипание" формы к определённому краю путём снятия нужной галочки.

Для получения рабочей области декстопа (минус панель задач, панель Microsoft и т.д.), используем SystemParametersInfo, первый параметр которой SPI_GETWORKAREA.
... 

  private 
   procedure WMWINDOWPOSCHANGING 
            (var Msg: TWMWINDOWPOSCHANGING); 
             message WM_WINDOWPOSCHANGING; 

... 

procedure TfrMain.WMWINDOWPOSCHANGING 
          (var Msg: TWMWINDOWPOSCHANGING); 
const 
  Docked: Boolean = FALSE; 
var 
  rWorkArea: TRect; 
  StickAt : Word; 
begin 
  StickAt := StrToInt(edStickAt.Text); 
   
  SystemParametersInfo 
     (SPI_GETWORKAREA, 0, @rWorkArea, 0); 

  with Msg.WindowPos^ do begin 
    if chkLeft.Checked then 
     if x <= rWorkArea.Left + StickAt then begin 
      x := rWorkArea.Left; 
      Docked := TRUE; 
     end; 

    if chkRight.Checked then 
     if x + cx >= rWorkArea.Right - StickAt then begin 
      x := rWorkArea.Right - cx; 
      Docked := TRUE; 
     end; 

    if chkTop.Checked then 
     if y <= rWorkArea.Top + StickAt then begin 
      y := rWorkArea.Top; 
      Docked := TRUE; 
     end; 

    if chkBottom.Checked then 
     if y + cy >= rWorkArea.Bottom - StickAt then begin 
      y := rWorkArea.Bottom - cy; 
      Docked := TRUE; 
     end; 

    if docked then begin 
      with rWorkArea do begin 
      // не должна вылезать за пределы экрана 
      if x < Left then x := Left; 
      if x + cx > Right then x := Right - cx; 
      if y < Top then y := Top; 
      if y + cy > Bottom then y := Bottom - cy; 
      end; {ширина rWorkArea} 
    end; {} 
  end; {с Msg.WindowPos^} 

  inherited; 
end; 
end.
Теперь достаточно запустить проект и перетащить форму к любому краю экрана. Вот собственно и всё. А вот другой более короткий (и может быть, даже лучший) способ:
procedure TCustomGlueForm.WMWindowPosChanging1(var Msg: TWMWindowPosChanging); 
var 
WorkArea: TRect;   
StickAt : Word;   
begin 
StickAt := 10;   
SystemParametersInfo(SPI_GETWORKAREA, 0, @WorkArea, 0);   
with WorkArea, Msg.WindowPos^ do     
begin 
// Сдвигаем границы для сравнения с левой и верхней сторонами   
Right:=Right-cx;   
Bottom:=Bottom-cy;   
if abs(Left - x) <= StickAt then x := Left;   
if abs(Right - x) <= StickAt then x := Right;   
if abs(Top - y) <= StickAt then y := Top;   
if abs(Bottom - y) <= StickAt then y := Bottom;   
end;   
inherited;   
end;

Вот и всё, Удачи!

Источник: www.thedelphi.ru
Автор: Савельев Александр
Опубликовано: 9 Февраля 2014
Просмотров:


Зарегистрируйтесь или авторизуйтесь, чтобы добавлять комментарии.