Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 17.11.2011, 17:42
vmilyoshin vmilyoshin вне форума
Прохожий
 
Регистрация: 26.10.2011
Сообщения: 15
Репутация: 10
По умолчанию Как передвинуть Label

Всем привет! Есть форма. На ней несколько десятков Labelов. При клике мыши по Label он меняет цвет. При нажатии Button выделенные Labelы должны поменять позицию. Ну например Label43.Top:= Label43.Top+1; Это всё понятно, ну как узнать из кучи Labelов какие из них поменяли цвет, чтобы именно они передвигались при клике по Button. Вообщем объяснил как смог. Надеюсь на Вашу помощь.
Ответить с цитированием
  #2  
Старый 17.11.2011, 18:18
Аватар для Amgsys HQ
Amgsys HQ Amgsys HQ вне форума
Начинающий
 
Регистрация: 11.11.2011
Адрес: Загрузочный сектор
Сообщения: 115
Версия Delphi: 7, XE
Репутация: 538
По умолчанию

Код при нажатии на кнопку:

Код:
procedure TMyForm.ButtonClick(Sender: TObject);
var
  i: Integer;
begin
  for i := 0 to ComponentCount - 1 do
    if Components[i] is TLabel then
      if TLabel(Components[i]).Font.Color = clRed then
      begin
        TLabel(Components[i]).Font.Color := clBlack;
        TLabel(Components[i]).Top := TLabel(Components[i]).Top + 1;
      end;
end;
__________________
Работа пpогpаммиста и шамана имеет очень много общего:
оба боpмочyт непонятные слова, совеpшают непонятные действия и не могyт объяснить, как оно pаботает.
Ответить с цитированием
  #3  
Старый 17.11.2011, 20:25
vmilyoshin vmilyoshin вне форума
Прохожий
 
Регистрация: 26.10.2011
Сообщения: 15
Репутация: 10
По умолчанию

Цитата:
Сообщение от Amgsys HQ
Код при нажатии на кнопку:

Код:
procedure TMyForm.ButtonClick(Sender: TObject);
var
  i: Integer;
begin
  for i := 0 to ComponentCount - 1 do
    if Components[i] is TLabel then
      if TLabel(Components[i]).Font.Color = clRed then
      begin
        TLabel(Components[i]).Font.Color := clBlack;
        TLabel(Components[i]).Top := TLabel(Components[i]).Top + 1;
      end;
end;

Спасибо БОЛЬШОЕ. Ещё один вопросик. На форме есть компонент Image отображающий бланк документа формата А4. Я хочу сделать чтобы при выводе на печать Image.Enable:= false; и остались бы одни Labelы. Но при Form.Print; печатается только видимая часть формы. На каком компоненте можно разместить Labelы, чтобы печатался весь документ.
Ответить с цитированием
  #4  
Старый 17.11.2011, 23:31
Аватар для Amgsys HQ
Amgsys HQ Amgsys HQ вне форума
Начинающий
 
Регистрация: 11.11.2011
Адрес: Загрузочный сектор
Сообщения: 115
Версия Delphi: 7, XE
Репутация: 538
По умолчанию

vmilyoshin, эксперементировали со свойтсвом формы "PrintScale"? Насколько я знаю, печатается только видимая на экране часть формы (если я неправ - не судите строго).

Из "родной" справки Delphi:

Цитата:
Use PrintScale to get or set the proportions of the printed form. PrintScale can have one of the following TPrintScale values:

poNone - No special scaling occurs; therefore, the printed form and how the form appears onscreen may appear squished or stretched.
poProportional - The form is printed so that the printed image is approximately the same visible size as on the screen (WYSIWYG). The form image is scaled so that the printed image is approximately the same visible size as on the screen.
poPrintToFit - The form is printed using the same screen proportions, but in a size that just fits the printed page.
__________________
Работа пpогpаммиста и шамана имеет очень много общего:
оба боpмочyт непонятные слова, совеpшают непонятные действия и не могyт объяснить, как оно pаботает.

Последний раз редактировалось Amgsys HQ, 17.11.2011 в 23:40.
Ответить с цитированием
  #5  
Старый 18.11.2011, 00:26
vmilyoshin vmilyoshin вне форума
Прохожий
 
Регистрация: 26.10.2011
Сообщения: 15
Репутация: 10
По умолчанию

Цитата:
Сообщение от Amgsys HQ
vmilyoshin, эксперементировали со свойтсвом формы "PrintScale"? Насколько я знаю, печатается только видимая на экране часть формы (если я неправ - не судите строго).

Из "родной" справки Delphi:

Не помогло. То что не входит в видимую часть формы всёравно остаётся за кадром.
Ответить с цитированием
  #6  
Старый 18.11.2011, 05:02
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,094
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Придется печатать самому
Собственно, создать битмап и с помощью TextOut вывести на него содержимое всех меток - не так и сложно. Только не забудь, что у принтера разрешение "немножко" больше, чем у монитора, соответсвенно, надо умножить все размеры и координаты на соотв. коэф. (ЗЫ. размер шрифта увеличивать не надо).
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 09:52.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025