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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 15.01.2007, 16:17
LobaS LobaS вне форума
Прохожий
 
Регистрация: 15.01.2007
Сообщения: 11
Репутация: 10
По умолчанию Объект button

Очень нужна помощь, заранее спасибо: пишу курсовую, навтыкал туда картинок - всё равно смотрится блекло, решил оформить как-то пооригинальнее кнопки и столкнулся с проблемой, что текст в кэпшн батона не меняет цвета - всё время чёрный, я так понимаю там нужно какую-то опцию включить, подскажите пожалуйста какую.
ЗЫ если не затруднит скажите личные идеи, как можно действительно оригинально оформить кнопки.
Ответить с цитированием
  #2  
Старый 16.01.2007, 13:47
rain917 rain917 вне форума
Прохожий
 
Регистрация: 16.01.2007
Сообщения: 8
Репутация: 10
По умолчанию

Вариант №1
Вставляешь в любое место формы компоненту TXPManifest (в 7 версии она на странице Win32). И все приложение в run-time (при запуске) под XP резко меняется.

Вариант №2
Вместо кнопок кидаешь TLabel.

пишешь:
procedure TForm1.MyMouseEnter(Sender: TObject);
begin
if Sender.ClassType = TLabel then
with Sender as Tlabel do begin
Font.Style := Font.Style + [fsBold];
Font.Color := clHotLight;
end;
end;

procedure TForm1.MyMouseLeave(Sender: TObject);
begin
if Sender.ClassType = TLabel then
with Sender as Tlabel do begin
Font.Style := Font.Style - [fsBold];
Font.Color := clWindowText;
end;
end;

незабудь добавить
TForm1 = class(
...
public
procedure MyMouseEnter(Sender: TObject);
procedure MyMouseLeave(Sender: TObject);
....
end;

А дальше для всех псевдокнопок в инспекторе объектов выставляешь
события
OnMouseEnter как MyMouseEnter
OnMouseLeave как MyMouseLeave

запускаешь, наслаждаешься.
Ответить с цитированием
  #3  
Старый 16.01.2007, 20:06
LobaS LobaS вне форума
Прохожий
 
Регистрация: 15.01.2007
Сообщения: 11
Репутация: 10
По умолчанию

Огромное спасибо Оч. класно получилось
Ответить с цитированием
  #4  
Старый 17.01.2007, 14:03
Аватар для CAHbKA
CAHbKA CAHbKA вне форума
Новичок
 
Регистрация: 10.01.2007
Сообщения: 66
Репутация: 10
По умолчанию

Цитата:
Сообщение от LobaS
Очень нужна помощь, заранее спасибо: пишу курсовую, навтыкал туда картинок - всё равно смотрится блекло, решил оформить как-то пооригинальнее кнопки и столкнулся с проблемой, что текст в кэпшн батона не меняет цвета - всё время чёрный, я так понимаю там нужно какую-то опцию включить, подскажите пожалуйста какую.
ЗЫ если не затруднит скажите личные идеи, как можно действительно оригинально оформить кнопки.
А я прочитал предыдущий пост а не легче просто создать SpeedButton и там меняется и цвет текста и картинку вставить мона и ....
Ответить с цитированием
  #5  
Старый 18.01.2007, 12:12
rain917 rain917 вне форума
Прохожий
 
Регистрация: 16.01.2007
Сообщения: 8
Репутация: 10
По умолчанию

да, но так, по-студенчески. Быстро и просто.
Ответить с цитированием
  #6  
Старый 18.01.2007, 20:58
LobaS LobaS вне форума
Прохожий
 
Регистрация: 15.01.2007
Сообщения: 11
Репутация: 10
По умолчанию

Вот ещё один вопрос возник - никогда раньше не сталкивался с Drag'n'Drop, интересует обычное перетаскивание Shape по форме, причём без дропа, т.е. пользователь зажал на шейпе левую кнопку мыши и пошёл его таскать по всей форме как это оформить, причём так, чтобы топ и лефт шейпа изменялись в зависимости от того, куда юзер перетащит объект?
Ответить с цитированием
  #7  
Старый 19.01.2007, 11:12
rain917 rain917 вне форума
Прохожий
 
Регистрация: 16.01.2007
Сообщения: 8
Репутация: 10
По умолчанию

На дурака

...
Draging : boolean;
DrOffs : TPoint;
...
procedure TForm1.Shape1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Draging := True;
DrOffs.X := X;
DrOffs.Y := Y;
end;

procedure TForm1.Shape1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Draging := False;
end;

procedure TForm1.Shape1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if Draging then begin
Shape1.Left := Shape1.Left + (X-DrOffs.X);
Shape1.Top := Shape1.Top + (Y-DrOffs.Y);
end;
end;

проверку на левую/правую клавшу добавишь сам.
Ответить с цитированием
  #8  
Старый 19.01.2007, 18:21
LobaS LobaS вне форума
Прохожий
 
Регистрация: 15.01.2007
Сообщения: 11
Репутация: 10
По умолчанию

ещё раз огромное спасибо!
Ответить с цитированием
  #9  
Старый 25.01.2007, 00:12
LobaS LobaS вне форума
Прохожий
 
Регистрация: 15.01.2007
Сообщения: 11
Репутация: 10
По умолчанию

И снова нужен хелп
Нужно создать массив объектов Image, раньше работал в VB, там насколько помню всё было просто, нужно было только index менять, а тут пробую - не получается
Ответить с цитированием
  #10  
Старый 26.01.2007, 11:52
Аватар для 4kusNick
4kusNick 4kusNick вне форума
Местный
 
Регистрация: 06.09.2006
Адрес: Россия, Санкт-Петербург
Сообщения: 444
Репутация: 550
По умолчанию

TImageList (на вкладке Win32) подойдет?
__________________
THE CRACKER IS OUT THERE
Ответить с цитированием
  #11  
Старый 26.01.2007, 15:32
LobaS LobaS вне форума
Прохожий
 
Регистрация: 15.01.2007
Сообщения: 11
Репутация: 10
По умолчанию

Нет, это не то нужен массив, в который возможно динамическое добавление, т.е. пользователь кликнул на кнопку - создался в массиве ещё один TImage, просто делаю мини-стратегию и нужно, чтобы по клику на определённой иконке появлялся юнит. Вот и решил для каждого типа юнитов сделать отдельный массив и чтобы когда пользователь кликал на его иконку в меню создания юнитов, то в массиве появлялся новый Image, ну а когда этого юнита убивают, то соответственно элемент удаляется... Может это можно как-то рациональнее реализовать?
Ответить с цитированием
  #12  
Старый 26.01.2007, 16:47
ilang ilang вне форума
Новичок
 
Регистрация: 11.12.2006
Сообщения: 68
Репутация: 10
По умолчанию

Ну вообще-то менять картинки в TImageList можно и в RunTime. Но картинки обязательно должны быть одинакового размера.
Я бы тебе порекомендовал использовать класс TList. Это список (читай - динамический массив) указателей. В нем реализованы самые основные действия (добавить, удалить, переместить и т. д.).
Ответить с цитированием
  #13  
Старый 26.01.2007, 17:29
LobaS LobaS вне форума
Прохожий
 
Регистрация: 15.01.2007
Сообщения: 11
Репутация: 10
По умолчанию

Вот только что пытался сделать вот так вот:

procedure TForm1.Button1Click(Sender: TObject);
var imagesss:array[1..10] of TButton;
i:integer;
begin
For i:=1 to 5 do
begin
imagesss[i].create(Self);
with imagesss[i] do begin
parent:=self;
caption:='Кнопка';
tag:=i;
top:=i*30;
self.InsertControl(Imagesss[i]);
end;
end;
end;

После нажатия на кнопку выдаёт ошибку Project **** raised exception class ****.... Пробовал Trace Into - программа стопорится вот на этой строке: imagesss[i].create(Self); в чём может быть дело и как это исправить?
Ответить с цитированием
  #14  
Старый 26.01.2007, 17:43
ilang ilang вне форума
Новичок
 
Регистрация: 11.12.2006
Сообщения: 68
Репутация: 10
По умолчанию

Ну конечно будет ошибка. Ты пытаешься вызвать метод еще не существующего объекта. Создавать объект нужно вызовом метода класса, например:
Код:
var MyObject : TSomeClass;
begin
  MyObject := TSomeClass.Create
end;
А после завершения работы обязательно освободи память
Код:
MyObject.Free
Ответить с цитированием
  #15  
Старый 26.01.2007, 21:45
LobaS LobaS вне форума
Прохожий
 
Регистрация: 15.01.2007
Сообщения: 11
Репутация: 10
По умолчанию

всё работает, спасибо! вот только память не освобождается - у меня массив назван kletki, так вот, строку kletki.free не воспринимает, пишет, что ошибка в программном коде может я что-то не так делаю?
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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