Главная Главная страница форума Регистрация Вход
Новые сообщения Участники форума Правила форума Поиск
Страница 2 из 4«1234»
Модератор форума: stalker, Ekz 
Форум » Все о Delphi » Начинающим » Пишем FAQ (FAQ по Delphi)
Пишем FAQ
AdminДата: Суббота, 20.09.2008, 17:24 | Сообщение # 16
Ранг 10
Группа: Пользователи
Сообщений: 1268
Награды: 16
Репутация: 2
Статус: Offline
Code
procedure TForm1.Label2Click(Sender: TObject);   
begin   
Dec(k);   
    Label2.Caption := IntToStr(k);   
     if k = 0 then ShowMessage('Вы проиграли!');   
end;

вот что происходит по клику на Label просто удалите все что между Begin и End и откомпилируйте (ctrl+F9) И эта процедура сама исчезнет


Не оказываю помощь через личные сообщения и ICQ
 
ImprovsДата: Суббота, 20.09.2008, 17:33 | Сообщение # 17
Ранг 1
Группа: Проверенные
Сообщений: 17
Награды: 0
Репутация: 3
Статус: Offline
Спасибо ! Теперь все работает как надо , очень признателен вам . С нетерпением жду новой вашей статьи , не терпится продолжить обучение )
 
AdminДата: Суббота, 20.09.2008, 17:40 | Сообщение # 18
Ранг 10
Группа: Пользователи
Сообщений: 1268
Награды: 16
Репутация: 2
Статус: Offline
Попробуйте сделать больше того что описано в статье. Ну например сделайте диалог о программе. И например правила, уровень сложности. Последнее делать очень просто. выложите на форму 2-3 кнопки и по нажатию на них меняйте значение k а также начинайте новую игру

Вот сделал немного усовершенствование. По кнопке "ОК"(добавил начало новой игры):

Code
procedure TForm1.Button1Click(Sender: TObject);
var Ent: byte;
begin
   Ent := StrToInt(Edit1.Text);
   if Ent > x then Label1.Caption := 'Меньше.';
   if Ent < x then Label1.Caption := 'Больше';
   if Ent = x then
   begin
     ShowMessage('Вы угадали !');
     k:=10;
     x := Random(101);
     Label1.Caption := 'Давайте играть сначала';
     Edit1.Text:='';
   end;

   Dec(k);
   Label2.Caption := IntToStr(k);
   if k = 0 then
   begin
     ShowMessage('Вы проиграли !');
     k:=10;
     x := Random(101);
     Label1.Caption := 'Давайте играть сначала';
     Edit1.Text:='';
   end;

end;

Посмотрите внимательно на код и вы увидете что там часть кода повторяется 2 раза. И еще вам нужно например будет такойже код (это код начала новой игры, от k=10 до edit1.text:='') добавить во время изменения уровня сложности (точнее колличества попыток). кода можно сделать меньше сделав процедуру начала новой игры с входным параметром колличества попыток. и вызывать эту процедуру когда нужно. Это намного удобнее, да и коду меньше.


Не оказываю помощь через личные сообщения и ICQ
 
ImprovsДата: Суббота, 20.09.2008, 19:17 | Сообщение # 19
Ранг 1
Группа: Проверенные
Сообщений: 17
Награды: 0
Репутация: 3
Статус: Offline
Code
procedure TForm1.Button2Click(Sender: TObject);
begin
k:=8;
x:=Random(101);
Label5.Caption:='8 ïîïûòîê';
Label6.Caption:='';
Label7.Caption:='';
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
k:=7;
x:=Random(101);
Label6.Caption:='7 ïîïûòîê';
Label5.Caption:='';
Label7.Caption:='';
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
k:=5;
x:=Random(101);
Label7.Caption:='5 ïîïûòîê';
Label5.Caption:='';
Label6.Caption:='';

end;

end.

Ура ! Все получилось =)
Спасибо еще раз smile
Можно ли менять форму формы ?Всмысле не только уменьшать , увеличивать , менять имя , цвет и т.д но и допустим сделать ее круглой , вставить рисунок , написать что либо внутри ... поменять цвет кнопок и т.д ?

 
AdminДата: Суббота, 20.09.2008, 19:40 | Сообщение # 20
Ранг 10
Группа: Пользователи
Сообщений: 1268
Награды: 16
Репутация: 2
Статус: Offline
Да конечно можно. самый простой способ это выложить на форму TImage загрузить в него какойнибуть BMP. JPG не пойдет, будет немного нетак выглядеть. Например на нем нарисован круг а фон зеленый. Форму также нужно сделать зеленым цветом. Дальше в свойство формы TransparentColorValue установите зеленый цвет. Должен быть тот же цвет что и цвет формы. Этот цвет вообще не будет показываться, точнее он будет прозрачным на всей форме. TransparentColor установите в True. Загружаете в Image картинку и у Image свойство Transparent устанавливаете в True. Фон становится прозрачный. Вот и все.
Вот картинку нарисовал:
Прикрепления: new.rar(20Kb)


Не оказываю помощь через личные сообщения и ICQ
 
AdminДата: Суббота, 20.09.2008, 19:45 | Сообщение # 21
Ранг 10
Группа: Пользователи
Сообщений: 1268
Награды: 16
Репутация: 2
Статус: Offline
Ах да, забыл немного сказать. Если все это сделать то строка заголовка у окна будет видна. нужно свойство BorderStyle установить в bsNone. Сделав это строка исчезнет. Вообще это можно сделать и без всего че я описал до этого.

И еще очень полезный совет. Старайтесь писать код красиво. Это также хороший тон как и ремарки. Т.е. сразу писать end если написали Begin (чтобы не забыть и не запутаться) И писать Begin и End на одном расстоянии от левого края редактора. А все что между Begin и end нужно писать еще правее. Например

Code
If x=5 then
begin
    строка 1
    строка 2
    строка 3
    if x=d then
    begin
      еще одна строка
      еще одна строка
      и так далее. каждый следующий уровень левее
    end;
    if x=d then
    begin
      еще одна строка
    end;
end;

такой код и читать удобнее и приятнее на него смотреть. Да и ошибки легче находить. И вообще так все пишут :))


Не оказываю помощь через личные сообщения и ICQ
 
ImprovsДата: Суббота, 20.09.2008, 20:39 | Сообщение # 22
Ранг 1
Группа: Проверенные
Сообщений: 17
Награды: 0
Репутация: 3
Статус: Offline
Спасибо , получилось . Вот только Label не видно когда рисунок набрасываю , что делать не подскажите ?
 
AdminДата: Суббота, 20.09.2008, 20:44 | Сообщение # 23
Ранг 10
Группа: Пользователи
Сообщений: 1268
Награды: 16
Репутация: 2
Статус: Offline
Нада его позади сделать! правая кнопка по нему там Control -> Send to Back. и все!

Не оказываю помощь через личные сообщения и ICQ
 
ImprovsДата: Воскресенье, 21.09.2008, 00:55 | Сообщение # 24
Ранг 1
Группа: Проверенные
Сообщений: 17
Награды: 0
Репутация: 3
Статус: Offline
Не понимаю что значат эти термины : Ent , IntToStr , IntToStr(k) , StrToInt , Byte . Не подскажите ?

Сообщение отредактировал Improvs - Воскресенье, 21.09.2008, 00:56
 
AdminДата: Воскресенье, 21.09.2008, 12:43 | Сообщение # 25
Ранг 10
Группа: Пользователи
Сообщений: 1268
Награды: 16
Репутация: 2
Статус: Offline
Подскажу!
В уроке я описывал что ent - это введенная переменная. т.е. вместо нее можно написать практически хоть что (удавлетворяющее синтаксису естественно).

IntToStr - я вроде описывал в предыдущих уроках. ну мне не сложно сказать это еще раз. smile Это перевод из целочисленного типа в строковый. Проще запомнить так: Есть строковый тип String. В него записываются только строки. А есть целочисленный тип Integer. В него можно записать только числа, причем без точки (например, 5; 9; -995; 156489 и т. д. Любые почти.) Естественно у него есть границы, т.е. максимальное и минимальное число которое можно записать (как узнать границы: наведите курсор ввода на тип и нажмине F1. Там все написанно). Эти границы есть у любого типа. Вот IntToStr - это грубо говоря из Integer в String. Но это немного нетак. Можно не только из Integer. Правильнее будет из целочисленного типа в строковый. Integer - целочисленный. Целочисленных типов несколько.

StrToInt - все наоборот. Из строки в число.

Делаются эти преобразования для того чтобы можно было произвести необходимые манипуляции с данными. Например складывание двух чисел. Вы вводите в TEdit'ы строки. Строки конечно можно складывать но не так как числа (например есть 2 строки: "2" и "2". Если строки сложить то получится 1 строка "22") А нам нужно сложить 2 числа. Для этого и переводят числовой тип и складывают уже числа. Когда переведем получится два числа: первое 2 и второе тоже 2. Если уже числа сложить то будет НЕ 22 а 4. Как раз то что нам и нужно.

IntToStr и IntToStr(k) это одно и тоже. Всмысле в скобках указывается число которорое будет преобразовываться в строку. Функция IntToStr будет возвращать саму строку. Непонятно что такое возвращать? проще говоря ее можно использовать как переменную. Например:

Code
var x: String;
...
x:=intToStr(54);

В переменной x будет строка "54". Возвращает это означает что функция может передать значение. В данном случае передает преобразованное значение. Функцию можно написать самому. Как производится преобразование (код) можно посмотреть. Зажмите Ctrl и кликните по функции. Откроется еще один модуль. Кстати эти все функции уже написанные разработчиками продукта.

ну и последний вопрос. Byte - это тип. Также целочисленный. Но у него в отличии от Integer другие границы. От 0 до 255.
Еще существует множество типов: Longint, Int64, Cardinal, word и еще множество. Можете посмотреть в справке.


Не оказываю помощь через личные сообщения и ICQ
 
ImprovsДата: Вторник, 23.09.2008, 23:14 | Сообщение # 26
Ранг 1
Группа: Проверенные
Сообщений: 17
Награды: 0
Репутация: 3
Статус: Offline
Возникли вопросы с "Урок 9 - Изучаем компонент TMediaPlayer ".
1. Как же сделать чтобы при передвижении в ручную TrackBar трек тоже перематывался ?
2. Можно ли изменить кнопки ? не раскрасить , а поменять им форму ?) Ну допустим сделать их круглыми и т.п.
3. Как сделать запрет на нажатия кнопок когда песен нету в плеере ?
4. Как создать TrackList ?

 
AdminДата: Среда, 24.09.2008, 10:33 | Сообщение # 27
Ранг 10
Группа: Пользователи
Сообщений: 1268
Награды: 16
Репутация: 2
Статус: Offline
1. измените события так:
Code
var tmr:boolean;
...
procedure TForm1.Timer1Timer(Sender: TObject);
begin
    tmr:=True;
    TrackBar1.Position:=MediaPlayer1.Position;
    tmr:=false;
end;

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
    if not(tmr) then MediaPlayer1.Position:=TrackBar1.Position;
end;

Конечно используя TrackBar красиво не получится.

2. Конечно можно!!! выложите Image загрузите в него картинку. А и если фон нужно убрать (должен быть однотонный) то можно установить свойтво Transparent в True. Помимо этого нужно будет сделать, чтобы по клику уже на картинки происходили действия. Просто все что написанно по клику на кнопку сделать по клику на картинку. 2 способа: кликнуть два раза по картинке (создадим событие по клику) либо найти во вкладке Events событие OnClick. Естественно Image должен быть выделен.

3. Есть свойство Enabled. практически у каждого компонента. Попробуйте там все просто.

4. Можно выложить TListBox. В него загружать пути к файлам. И по двойному клику по нему смотреть какой путь выделен и его грузить в медиаплеер.
http://codelab.3dn.ru/forum/25-57-1 - вот посмотри что делал друг.


Не оказываю помощь через личные сообщения и ICQ
 
ImprovsДата: Среда, 24.09.2008, 23:39 | Сообщение # 28
Ранг 1
Группа: Проверенные
Сообщений: 17
Награды: 0
Репутация: 3
Статус: Offline
Quote (codelab)
2. Конечно можно!!! выложите Image загрузите в него картинку. А и если фон нужно убрать (должен быть однотонный) то можно установить свойтво Transparent в True. Помимо этого нужно будет сделать, чтобы по клику уже на картинки происходили действия. Просто все что написанно по клику на кнопку сделать по клику на картинку. 2 способа: кликнуть два раза по картинке (создадим событие по клику) либо найти во вкладке Events событие OnClick. Естественно Image должен быть выделен.

Я это понял . Но есле выкладывать картинку то получается что при нажатии на нее она не вдавливается как кнопка , не похоже на кнопку , тупо картинка , можно ли сделать что при нажатии на нее был эффект кнопки чтоли ? =) вжималась и отжималась как простая TButton . Есть программа Button Maker Delux , так вот там можно придавать 3д кнопкам тени всякие разные , мерцания , много всего и т.д . правда при мерцании ( что выглядит довольно красиво ) сохраняется в формате .png , такое можно применить к делфи ?
 
AdminДата: Четверг, 25.09.2008, 08:47 | Сообщение # 29
Ранг 10
Группа: Пользователи
Сообщений: 1268
Награды: 16
Репутация: 2
Статус: Offline
Эффект нажатия конечно же можно сделать. Обрабатывайте события у Image onMouseDown и onMouseUp и меняйте программно картинки.
Image1.Picture - хранится картинка. Не получится обращайтесь


Не оказываю помощь через личные сообщения и ICQ
 
ImprovsДата: Четверг, 25.09.2008, 15:35 | Сообщение # 30
Ранг 1
Группа: Проверенные
Сообщений: 17
Награды: 0
Репутация: 3
Статус: Offline
Как обрабатывать события чтобы при нажатии менялись картинки да и вобще как это делается ума не приложу . 90% знаний я получил исходя из ваших статей biggrin так что я не представляю какой код нужно писать . Его ведь нужно писать ? ) т.к. у меня в событиях onMouseDown , OnMouseUp пусто и выбрать нечего cry
 
Форум » Все о Delphi » Начинающим » Пишем FAQ (FAQ по Delphi)
Страница 2 из 4«1234»
Поиск:

Copyright DelphiDevelop.ru © 2008-2018
Хостинг от uCoz