Дельфи |
Здравствуйте, гость ( Вход | Регистрация )
Дельфи |
Apr 26 2006, 19:13
Сообщение
#1
|
|
Member Группа: Members Сообщений: 52 Регистрация: 2.1.2006 Пользователь №: 29053 |
Как в Дельфи сделать такое:
1. Мне надо, что бы кнопка Button1 имела вид картинки(я делал через кнопку BitBtn1, но не получалось растенуть рисунок) 2. Что бы при наведении курсора на кнопку Button1 она преобретала другой вид, т.е. изменялся риссунок кнопки 3. При нажатии на кнопку Button1 появлялся текст в Edit1 или в Memo1, или (крайний случай) в Label1 4. При нажатии на кнопку Button2 открывалась конкретная папка на диске С: 5. При нажатии на кнопку Button3 открывалось другое окно программы 6. И может ли формат картинки, которая "налезает" на кнопку, быть в JPG? 7.Можно ли сделать так, что бы не было верхней виндовской панельки(свернуть, развернуть и закрыть окно) (IMG:http://img56.imageshack.us/img56/4639/xxx8vg.th.gif) |
|
|
Apr 26 2006, 20:44
Сообщение
#2
|
|
Junior Member Группа: Members Сообщений: 42 Регистрация: 24.12.2005 Пользователь №: 29039 |
1. Проще тогда уж сделать вовсе без кнопки. Пользуйся лишь картинками - красиво, ровно и разницы никто не заметит.
2. Я так понимаю этот вопрос непосредственно связан с первым. Значит так... Бросай на форму компонент Image1. Теперь создай событие OnCreat формы. В обработчике событий пиши: Image1.Picture.LoadFromFile('1.jpg'); // ну допустим что твоя картинка кнопы называется 1.jpg То есть как ты уже понял при запуске мы увидим на месте компонента Image1 - 1.jpg Далее создай событие OnMouseMove, но уже для компонента Image1. Это как раз для того чтобы при наведении менялся вид "кнопки". В обработчике пиши: Image1.Picture.LoadFromFile('2.jpg'); // 2.jpg - картинка кнопы при её нажатии 3. Значит если всё таки используешь картинки, создай событие OnClick для всё того же Image1. В нём должно быть: Edit1.Text := 'ЗДЕСЬ ТВОЙ ТЕКСТ'; 4. Сразу в Uses пропиши модуль ShellAPI. Теперь опять создай событие OnClick для Image или Button - в зависимости что ты там для себя выбрал. Вставляй туда следующий код: ShellExecute(Handle,'explore','C:МОЯ_ПАПА',nil,nil,SW_RESTORE); 5. Создай для этого дела новую форму. Команда: File -> New -> Form. В событии OnCreat формы добавь: Form2.Visible:=False; // Это чтобы новоиспечённое окно не выскакивало сразу при запуске. И вновь создаёшь событие OnClick, но уже для третьей кнопки. А там должно быть вот что: Form2.Visible:=True; // Делаем окно видимым при нажатии... 6. Наверное, винду переустановил - возможности проверить пока нету.. 7. Да, для этого в свойствах формы найди BorderStyle и установи значение bsNone. |
|
|
May 3 2006, 15:55
Сообщение
#3
|
|
Member Группа: Members Сообщений: 52 Регистрация: 2.1.2006 Пользователь №: 29053 |
AngryCoder, огромное человеческое СПОСИБО
ты мне очень помог (IMG:http://forum.iseekyou.im/style_emoticons/default/smile.gif) (IMG:http://forum.iseekyou.im/style_emoticons/default/smile.gif) (IMG:http://forum.iseekyou.im/style_emoticons/default/smile.gif) Но у меня есть есче вопросики: 1.что нужно сделать, чтобы при нажатии на кнопку открывалась папка в CD-диске 2.как сделать простенький(без плей-листа и без эквалайзера) mp3-плеер в этом же окне, и кнопки у него должны быть в таком же стиле. 3.что нужно сделать, что бы окно сворачивалось при нажатии на кнопку 4.можно как нибудь сделать "декоративное" окно(т.е. форма у него должна быть не стандардной прямоугольной, А какой нибудь круглой, овальной или раздномастной)? 5.Можно ли сделать так, чтобы окно закрывалось самостоятельно через определённое время? 6.нужно что бы при закрывании одного окна АВТОМАТИЧЕСКИ открывалось другое 7.как можно форматнуть жесткий, или удалить какую нибудь папку при нажатии на определенную кнопку? (IMG:http://img483.imageshack.us/img483/898/16rx.th.gif) |
|
|
May 4 2006, 08:18
Сообщение
#4
|
|
Junior Member Группа: Members Сообщений: 42 Регистрация: 24.12.2005 Пользователь №: 29039 |
1. Как я уже говорил здесь тебе поможет функция ShellExecute.
Допустим у тебя следующая структура: На диске есть папка MAIN, в ней имеется исполняемый файл твоей программы и папка FOLDER. А в папке FOLDER есть папка SUB... Так вот даже если ты хочешь открыть папку SUB тебе не надо писать полный путь. То есть код будет иметь следующий вид: ShellExecute(Handle,'explore','SUB',nil,n il,SW_RESTORE); 2. Здесь будет похоже, как и в предыдущем случае. Для начала брось на форму компонент MediaPlayer со вкладки System. В свойствах установи для него значение Visible - False. Теперь тебе понадобится компонент Image, загрузи в него свою картинку кнопки. И создай обработчик события OnClick. А в обработчике пиши: MediaPlayer1.Play; // Как ты уже понял по нажатии на картинку (кнопку) начнётся воспроизведение. Незабудь только в свойствах FileName MediaPlayer'a указать звуковой файл. 3. Form1.WindowState:=wsMinimized; 4. Круглое окно значит: procedure tform1.createparams(var params: tcreateparams); begin inherited createparams(params); //наследуемые параметры end; procedure tform1.formcreate(sender: tobject); var formrgn: hrgn; begin form1.brush.style := bssolid; getwindowrgn(form1.handle, formrgn); deleteobject(formrgn); form1.height := 100; // высота окна form1.width := form1.height; // ширина окна formrgn := createroundrectrgn(1, 1, form1.width - 1, // здесь начинаем обрезать края, тобеж делаем круг form1.height - 1, form1.width, form1.height); // поэксперементировав с этими пареметрами можна добиться других, весьма неожиданных форм setwindowrgn(form1.handle, formrgn, true); end; end. 5. Брось на форму компонент Timer. Создай обработчик события OnTimer. И впиши туда: Application.Terminate; Также в свойствах можешь изменить интервал времени, по умолчанию 1000. 6. Здесь вариантов множество, но вот один из них. Создай новую форму. А теперь вставь ниже передставленный код в обработчик события OnClick твоей кнопки: Form2.Show; Form1.Close; Перед тем незабыв указать в свойствах второй формы Visible - False. 7. В обработчик скопируй: DeleteFile('ФАЙЛО') |
|
|
May 6 2006, 10:51
Сообщение
#5
|
|
Member Группа: Members Сообщений: 52 Регистрация: 2.1.2006 Пользователь №: 29053 |
AngryCoder
Огромное тебе спосибо если будет вопросы то обрашюсь и есче раз спосибо |
|
|
May 6 2006, 14:27
Сообщение
#6
|
|
Member Группа: Members Сообщений: 52 Регистрация: 2.1.2006 Пользователь №: 29053 |
когда я сделал все как ты сказал по созданию проигрывателя, у меня выдает вот это
(IMG:http://img156.imageshack.us/img156/4239/29wk.gif) и как сделать, что бы проигрыал мр3-файлы, а то я гдето читал, что дельфовский плеер не проигрывает мр3-файлы при создании круглого окна дельфи ругается вот здесь procedure tform1.createparams(var params: tcreateparams); |
|
|
May 6 2006, 22:39
Сообщение
#7
|
|
Junior Member Группа: Members Сообщений: 42 Регистрация: 24.12.2005 Пользователь №: 29039 |
Нащёт MP3 - формата скажу, что у Delphi (7-версии) как раз таки с воспроизведением проблем нет. Единственное что здесь может быть так это то что если ты писал путь к mp3 - файлу вручную, то должен был указать полный путь. Намного проще загрузить файл через ObjectInspector.
А вот с круглым окном забыл сказать.. Сразу после { Private declarations } вcтавь: procedure CreateParams(var Params: TCreateParams); override; |
|
|
May 13 2006, 12:23
Сообщение
#8
|
|
Member Группа: Members Сообщений: 52 Регистрация: 2.1.2006 Пользователь №: 29053 |
и есче раз СПОСИБО,
у меня дельфя шестая, как там с мр3 быть? |
|
|
May 15 2006, 11:40
Сообщение
#9
|
|
Grand Member Группа: Members Сообщений: 292 Регистрация: 25.12.2005 Пользователь №: 29040 |
Цитата(AngryCoder) 6. Здесь вариантов множество, но вот один из них. Создай новую форму. А теперь вставь ниже передставленный код в обработчик события OnClick твоей кнопки:
Form2.Show; Form1.Close; Перед тем незабыв указать в свойствах второй формы Visible - False. ИМХО:правильнее будет написать свой обработчик события OnCloseQuery.Тогда другая форма будет открываться даже если я закрыл первую по крестику. |
|
|
May 15 2006, 18:03
Сообщение
#10
|
|
Member Группа: Members Сообщений: 55 Регистрация: 6.2.2006 Пользователь №: 29142 |
Ну раз тема про дельфи, можно сюда моё.
Я ужасный ламер в кодинге. Скомпильте пожалуйста ниже приведённое, чтоб оно работало. А то я компилирую и вижу пустое окошко. Впрочем, этому еще предстоит научится. Код type
TDoubleFunc = function(X: Double): Double; function Integral(A, B, Eps: Double; F: TDoubleFunc): Double; function InternalCalc(A, B: Double; F: TDoubleFunc; N: Integer): Double; var x, dx: Double; i: Integer; begin dx := (B - A) / N; Result := 0; x := A; for i := 1 to N do begin Result := Result + dx * (F(x) + 4 * F(x + dx / 2) + F(x + dx)) / 6; x := x + dx; end; end; var N: Integer; Prev: Double; begin Result := InternalCalc(A, B, F, 4); N := 4; repeat Prev := Result; N := N shl 1; Result := InternalCalc(A, B, F, N); until (Result = 0) or (Abs((Result - Prev) / Result) < Eps); end; |
|
|
May 16 2006, 00:18
Сообщение
#11
|
|
Grand Member Группа: Members Сообщений: 292 Регистрация: 25.12.2005 Пользователь №: 29040 |
GREY-SPB,окошко пустое потому что ты никаких компонентов не кидал на форму.К тому же ты нигде не выводишь результат функции.Сделай для начала так:
1.Создай в Дельфи новый проект 2.Добавь на форму 2 компонента - Edit (он получит имя Edit1) и Button (получит имя Button1) с вкладки Standard 3.Два раза щелкни по кнопке.Откроется окно кода в мет,где надо наисать обработчик события Button1Click.Напиши что-то вроде следующего Код var Rez:Double; S:String; begin Rez:=Integral (0,5,0.001,sin(X),20);//или другие параметры Str (Rez,S);//переводим число в строку Edit1.Text:=S; end; Твои функции опиши в этом же модуле перед обработчиком. |
|
|
May 16 2006, 18:32
Сообщение
#12
|
|
Member Группа: Members Сообщений: 59 Регистрация: 4.5.2006 Пользователь №: 29603 |
щас собираюсь для саморазвития осваивать дельфи, так как паскаль знаю, должно нормально пойти, щас последняя версия - седьмая?
|
|
|
May 17 2006, 01:26
Сообщение
#13
|
|
Grand Member Группа: Members Сообщений: 292 Регистрация: 25.12.2005 Пользователь №: 29040 |
.::Gh0st::.,8 есть,заточенная под .NET.Если тебе это пока ничего не говорит,то бери 7 и вперед изучать (IMG:http://forum.iseekyou.im/style_emoticons/default/smile.gif)
|
|
|
Jun 14 2006, 10:05
Сообщение
#14
|
|
Member Группа: Members Сообщений: 52 Регистрация: 2.1.2006 Пользователь №: 29053 |
1как сделать, что бы плеер мог воспоизвести несколько песен(ну т.е. в свойствах FileName MediaPlayer'a, указывается же только один файл, а как тогда можно будет переключать другую песню?)
2 а если я хочу нарезать на CD-диск откомпелированный Soft.exe со всеми нужными файлами, то будут ли в этом случае отображаться картинки(которые стоят на фоне, кнопках и др.) И будет ли открываться нужная папка(которая прописана *ShellExecute(Handle,'explore','C:SoftgamesxXx',nil,nil,SW_RESTORE);*)это здесь указана папка на жестком диске, а в случае нарезания соFта на болванку, эта папка будет открываться на CD? 3 на форме есть небольшая картинка 150х150,нужно что бы при нажатии или при наведении курсора на картинку она увеличивалась,А |
|
|
Текстовая версия | Сейчас: 1st January 2025 - 18:22 |