IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Reply to this topicStart new topic
> Дельфи
GeK
сообщение 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)
Go to the top of the page
 
+Quote Post
AngryCoder
сообщение 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.
Go to the top of the page
 
+Quote Post
GeK
сообщение 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)
Go to the top of the page
 
+Quote Post
AngryCoder
сообщение 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('ФАЙЛО')
Go to the top of the page
 
+Quote Post
GeK
сообщение May 6 2006, 10:51
Сообщение #5


Member
**

Группа: Members
Сообщений: 52
Регистрация: 2.1.2006
Пользователь №: 29053



AngryCoder
Огромное тебе спосибо
если будет вопросы то обрашюсь

и есче раз спосибо
Go to the top of the page
 
+Quote Post
GeK
сообщение 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);
Go to the top of the page
 
+Quote Post
AngryCoder
сообщение 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;
Go to the top of the page
 
+Quote Post
GeK
сообщение May 13 2006, 12:23
Сообщение #8


Member
**

Группа: Members
Сообщений: 52
Регистрация: 2.1.2006
Пользователь №: 29053



и есче раз СПОСИБО,
у меня дельфя шестая, как там с мр3 быть?
Go to the top of the page
 
+Quote Post
Alder
сообщение May 15 2006, 11:40
Сообщение #9


Grand Member
****

Группа: Members
Сообщений: 292
Регистрация: 25.12.2005
Пользователь №: 29040



Цитата(AngryCoder)
6. Здесь вариантов множество, но вот один из них. Создай новую форму. А теперь вставь ниже передставленный код в обработчик события OnClick твоей кнопки:
Form2.Show;
Form1.Close;
Перед тем незабыв указать в свойствах второй формы Visible - False.

ИМХО:правильнее будет написать свой обработчик события OnCloseQuery.Тогда другая форма будет открываться даже если я закрыл первую по крестику.
Go to the top of the page
 
+Quote Post
GREY-SPB
сообщение 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;
Go to the top of the page
 
+Quote Post
Alder
сообщение 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;

Твои функции опиши в этом же модуле перед обработчиком.
Go to the top of the page
 
+Quote Post
.::Gh0st::.
сообщение May 16 2006, 18:32
Сообщение #12


Member
**

Группа: Members
Сообщений: 59
Регистрация: 4.5.2006
Пользователь №: 29603



щас собираюсь для саморазвития осваивать дельфи, так как паскаль знаю, должно нормально пойти, щас последняя версия - седьмая?
Go to the top of the page
 
+Quote Post
Alder
сообщение 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)
Go to the top of the page
 
+Quote Post
GeK
сообщение 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,нужно что бы при нажатии или при наведении курсора на картинку она увеличивалась,А
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 1st January 2025 - 18:22