Вопрос № 30460: Здравствуйте, уважаемые эксперты. У меня возникла проблема. Подскажите, пожалуйста, API функцию (если таковая есть) для контроля из моей программы за регулятором громкости в Виндовс. Заранее благодарю за любые ответы....Вопрос № 30476: Здравствуйте уважаемые эксперты. Как мне сделать чтобы в процедуре или функции написанной мной можно было напрямую использовать компоненты расположеные на форме? Может там куда-то что-то прописать
надо? Например
procedure someproc;
begin
...Вопрос № 30477: Здарова Эксперты !!!
Класно работаете ребята, Спасибо вам за предыдущие ответы!!!
А теперь у меня возник следующий вопрос:
не могу реализовать конструкцию типа
"ели в TwebBrowser загружена определенная странничка например i...Вопрос № 30478: Здарова Эксперты !!!
Еще вопрос
подскажите где можно достать электронный учебник или справочник
с подробным описанием компонентов(их свойст,событий) с примерчиками на каждый компонент
и есть ли такой вообще ???
...Вопрос № 30492: Ув Эксперты!
Где можно найти хорошое инфо на русском про winapi для delphi
А то я из одного форума скачал и запустил она отказывается работать ссылается на ошибку windows.pas почему? ...Вопрос № 30510: В Delphi существует стандартная комп. TCalendar которая выводит день-месяц-год. Как ее преобразовать чтобы выводился только списик годов?...
Вопрос № 30.460
Здравствуйте, уважаемые эксперты. У меня возникла проблема. Подскажите, пожалуйста, API функцию (если таковая есть) для контроля из моей программы за регулятором громкости в Виндовс. Заранее благодарю за любые ответы.
Отправлен: 29.11.2005, 17:06
Вопрос задал: Sanya (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Ataman N. N.
Здравствуйте, Sanya!
Подобные функции находятся в модуле mmsystem.dcu. Есть такой сборник факов - Kuliba, так вот в нем есть пример регулятора громкости, но под Delphi не работает, сам пробовал.
Ответ отправил: Ataman N. N. (статус: 4-ый класс)
Отправлен: 29.11.2005, 17:53 Оценка за ответ: 4
Отвечает: sir henry
Здравствуйте, Sanya!
Слежение за регулятором бессмысленно. Можно сделать свой регулятор и им регулировать уровень громкости.
См. приложение. Пример взят с сайта delphiworld.narod.ru
Приложение:
Ответ отправил: sir henry (статус: Академик)
Отправлен: 29.11.2005, 17:56 Оценка за ответ: 5 Комментарий оценки: Спасибо
Вопрос № 30.476
Здравствуйте уважаемые эксперты. Как мне сделать чтобы в процедуре или функции написанной мной можно было напрямую использовать компоненты расположеные на форме? Может там куда-то что-то прописать надо? Например
procedure someproc;
begin
Edit1.Text := 'Something';{выходит ошибка E2003 Undeclared identifier: 'Edit1'}
end;
Отправлен: 29.11.2005, 21:19
Вопрос задал: Teapot (статус: Посетитель)
Всего ответов: 12 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Архангельский Андрей Германович
Здравствуйте, Teapot!
Она же тебе написала - "Не знаю я кто-такой Edit1"
Если у тебя Edit1 находится в модуле Unit1 (например на Красной площади)
а процедура someproc находиться в модуле Unit2 (например во Владивостоке)
То нужно же как-то сказать процедуре (а точнее модулю Unit2) где находится Edit1, а также где находится Unit1
Отвечает: Jadd
Здравствуйте, Teapot!
Можно в функцию передать указатель на TForm и там дальше уже использовать массив контролов, и юзать их свойства.
--------- Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Специалист)
Отправлен: 29.11.2005, 21:31
Отвечает: REFERI
Здравствуйте, Teapot!
Да, кое-что надо добавить:
procedure TForm1.someproc;
begin
Edit1.Text := 'Something';{выходит ошибка E2003 Undeclared identifier: 'Edit1'}
end;
Удачи!
--------- Не судите, да не судимы будете...
Ответ отправил: REFERI (статус: Студент)
Отправлен: 29.11.2005, 22:02
Отвечает: Маренич Владимир
Здравствуйте, Teapot!
Нужно указывать объект-владелец Edit1: например, Form1 (переменная).
Тогда обращение в вашем случае буде выглядеть так:
Form1.Edit1.Text := 'Something';
Ответ отправил: Маренич Владимир (статус: 7-ой класс)
Отправлен: 29.11.2005, 22:29 Оценка за ответ: 5
Отвечает: Schmak
Здравствуйте, Teapot!
Я знаю по крайней мере 2 способа:
1)Явно указать какой форме принадлежит тот или иной компонент.
2)Сначала объявить процедуру в разделе определения класса.
К названию процедуры прибавить Tform1. (в общем название класса формы), после этого внутри процедуры можно без проблем обращаться к компонентам формы и различным глобальным переменным юнита.
Пример смотрите в приложении. Соответствующие процедуры Somedo1 и Somedo2
Приложение:
--------- Не всё то Windows, что висит!
Ответ отправил: Schmak (статус: Студент)
Отправлен: 30.11.2005, 05:34 Оценка за ответ: 5
Отвечает: sir henry
Здравствуйте, Teapot!
Либо введите Вашу процедуру или фцнкцию в состав класса формы:
TForm1 = class(TForm)
...
private
Procedure YourProc(s:string);
End;
Тогда все, что написано в Вашей процедуре можно оставить так, как есть.
Либо напрямую пишите имя формы в этой процедуре:
Form1.Edit1.Text:='Something';
Ответ отправил: sir henry (статус: Академик)
Отправлен: 30.11.2005, 05:56 Оценка за ответ: 5
Отвечает: Vbhjndjhtw
Здравствуйте, Teapot!
Делфя тебе сказала, мол незадекларированный идентификатор переменной.
Надо объявлять переменные.
procedure someproc;
var
a : string; //Объявление переменной
begin
a:=Edit1.Text;
Edit1.Text := 'Something';
end;
P.S Мой совет сначала выучи Turbo Pascal 7.0, а потом уже занимайся объектным програмиорванием.
--------- Бороться и искать, найти и перепрятать!
Ответ отправил: Vbhjndjhtw (статус: 4-ый класс)
Отправлен: 30.11.2005, 08:02 Оценка за ответ: 3 Комментарий оценки: А вы сами пробовали сделать то что написали?
Отвечает: Vadim Vitomsky
Здравствуйте, Teapot!
Необходимо немного подправить код:
Иначе процедура просто не видит контрола, который принадлежит форме.
Ответ отправил: Vadim Vitomsky (статус: 4-ый класс)
Отправлен: 30.11.2005, 09:51 Оценка за ответ: 5
Отвечает: Ataman N. N.
Здравствуйте, Teapot!
Для этого нужно указывать полное имя компонента. Ваш пример будет правильным так:
procedure someproc;
begin
<Имя Формы>.Edit1.Text := 'Something';{выходит ошибка E2003 Undeclared identifier: 'Edit1'}
end;
Можно так:
procedure someproc;
begin
with <Имя Формы> do
begin
Edit1.Text := 'Something';{выходит ошибка E2003 Undeclared identifier: 'Edit1'}
Edit1.Text := 'Something';
Panel1.Button1.Caption := 'OK'
end;
end;
Ответ отправил: Ataman N. N. (статус: 4-ый класс)
Отправлен: 30.11.2005, 16:24 Оценка за ответ: 5
Отвечает: Denisss Здравствуйте, Teapot!
Edit1 - это подкласс формы (Form1, например).
Ошибка происходит именно по этой проблеме. Т.к. Вы пытаетесь обратиться к Edit1 напрямую, а не через форму (Form1.Edit1).
Решения:
1. Обратиться к компоненту через форму: Form1.Edit1.Text
2. Создать процедуру someproc внутри класса формы:
type TForm1 = class(TForm)
... protected procedure Someproc;
... end;
........ procedure Form1.Someproc; begin
Edit1.Text:= 'Something'; end;
3. Не совсем, конечно, ответ по теме, но несколько рекомендаций (все эти рекомендации Вы можете прочитать в статье Марко Канту "20 правил ООП в Delphi):
1) Называйте компоненты "говорящими" именами (не Edit1, Button1, а, например, edName, btnOK и т.д.);
2) Не обращайтесь к компонентам напрямую - обращайтесь к ним через свойства формы:
type
TmyForm = class(TForm);
edName: TEdit; protected
procedure SetName(AValue: string); function GetName: string; public
property Name: string read GetName write SetName; end;
........
procedure MyForm.SetName(AValue: string); begin
edName.Text:= AValue; end;
function MyForm.GetName: string; begin
Result:= edName.Text; end;
Это позволит Вам в дальнейшем перейти на использование любых типов компонентов (например, у которых будет не свойство Text, а свойство Caption).
Далее, в других местах Вы сможете обращаться к Edit так:
MyForm.Name:= 'Имя';
strName:= MyForm.Name;
Ответ отправил: Denisss (статус: Специалист)
Отправлен: 30.11.2005, 16:36 Оценка за ответ: 5 Комментарий оценки: Я тоже считаю, что компоненты нужно называть "говорящими" именами, но во время обучения, создавая элементарные программы, на которых максимум десять компонентов обхожусь без говорящих имен :)
Отвечает: Golden Spider
Дело в том что Delphi не видит вашу процедуру.
К ней нужно обращатся через Tform1.someproc.
Смотри пример.
Приложение:
--------- Знания ничто! Хорошие знания Всё!
Ответ отправил: Golden Spider (статус: 2-ой класс)
Отправлен: 30.11.2005, 16:56 Оценка за ответ: 5
Отвечает: CJ
Здравствуйте, Teapot!
Необходимо писать Form1.Edit1.Text := 'Something';
Ответ отправил: CJ (статус: Студент)
Отправлен: 30.11.2005, 18:07 Оценка за ответ: 5
А теперь у меня возник следующий вопрос:
не могу реализовать конструкцию типа
"ели в TwebBrowser загружена определенная странничка например index1.htm то выполнить то или иное действие"
Подскажите пожалуйста как выловить это событие браузера
Отправлен: 29.11.2005, 21:51
Вопрос задал: Andrey_666 (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Rusland
Здравствуйте, Andrey_666!
У компонента TWebBrowser есть событие OnDownloadComplete, которое происходит когда страничка полностью загружена, используйте его. Удачи.
--------- Пресловутое недостающее звено между обезьяной и цивилизованным человеком - это как раз мы. (Конрад Лоренц)
Ответ отправил: Rusland (статус: Практикант)
Отправлен: 30.11.2005, 10:17 Оценка за ответ: 5
Вопрос № 30.478
Здарова Эксперты !!!
Еще вопрос
подскажите где можно достать электронный учебник или справочник
с подробным описанием компонентов(их свойст,событий) с примерчиками на каждый компонент
и есть ли такой вообще ???
Отправлен: 29.11.2005, 21:55
Вопрос задал: Andrey_666 (статус: Посетитель)
Всего ответов: 4 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Ujin Antikvar
Здравствуйте, Andrey_666!
Есть неплохая книга Архангельского "100 компонентов общего назначения библиотеки Delphi"
Так же можете смотреть в Help Delphi (могу дать на русском)
Напишите мне на E-mail свое мыло и я вам их вышлю
С Уважением,
Ujin Antikvar!!!
Приложение:
--------- "Будущее принадлежит тем, кто верен своей мечте" - Элеонора Рузвельт
Ответ отправил: Ujin Antikvar (статус: 3-ий класс)
Отправлен: 29.11.2005, 23:05 Оценка за ответ: 5
Отвечает: Warrior
Здравствуйте, Andrey_666!
Книгу от Фаронова и Архангельского.
Но это компоненты только стандартного набора.
Кроме того нужно обратить внимание на то, что в набор компонентов отличается от версии к версии.
Ответ отправил: Warrior (статус: 2-ой класс)
Отправлен: 30.11.2005, 05:44 Оценка за ответ: 5
Отвечает: Vbhjndjhtw
Здравствуйте, Andrey_666!
Могу выслать А.Я. Архангельский "100 Компонентов"
Кинь своё мыло.
--------- Бороться и искать, найти и перепрятать!
Ответ отправил: Vbhjndjhtw (статус: 4-ый класс)
Отправлен: 30.11.2005, 07:40 Оценка за ответ: 4
Отвечает: Vadim Vitomsky
Здравствуйте, Andrey_666!
Посмотри на сайте http://delphiplus.org - там много классной документации по дельфям.
Ответ отправил: Vadim Vitomsky (статус: 4-ый класс)
Отправлен: 30.11.2005, 09:55 Оценка за ответ: 5
Вопрос № 30.492
Ув Эксперты!
Где можно найти хорошое инфо на русском про winapi для delphi
А то я из одного форума скачал и запустил она отказывается работать ссылается на ошибку windows.pas почему?
Отправлен: 30.11.2005, 09:32
Вопрос задал: ERA (статус: Посетитель)
Всего ответов: 5 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Vbhjndjhtw
Здравствуйте, ERA!
Скорее всего делфи жалуется на отсутствие файла windows.pas. Скопируй его в ту директорию где находится твой компонент.
--------- Бороться и искать, найти и перепрятать!
Ответ отправил: Vbhjndjhtw (статус: 4-ый класс)
Отправлен: 30.11.2005, 09:41
Отвечает: sir henry
Здравствуйте, ERA!
Тут тока посмеятся остается. Windows.pas - это изложение winapi для применения в Дельфи и нету там никаких ошибок. Только если Выошибочно его применяете. :)
Справка по winapi в транскрипции для Дельфи лежала тут:
http://soobcha.ru/rushelp
Но она сильно неполная. Самая полная инфа - msdn. Ничего лучше нет и быть не может.
Т.е. вы читаете в msdn описание нужной Вам функции, а потом смотрите в windows.pas как она выглядит в Дельфи. По другому никак.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 30.11.2005, 09:50
Отвечает: Vadim Vitomsky
Здравствуйте, ERA!
Попробуй поискать на http://delphiplus.org
Я там много интересной документации скачал!
Ответ отправил: Vadim Vitomsky (статус: 4-ый класс)
Отправлен: 30.11.2005, 10:01
Отвечает: Ujin Antikvar
Здравствуйте, ERA!
Могу дать три книги книги по WinAPI (очень хорошие)
Напиши мне свое мыло и я тебе их вышлю
С Уважением,
Ujin Antikvar!!! arbuznikov@matrix.odessa.ua
--------- "Будущее принадлежит тем, кто верен своей мечте" - Элеонора Рузвельт
Ответ отправил: Ujin Antikvar (статус: 3-ий класс)
Отправлен: 30.11.2005, 19:26
Отвечает: REFERI
Здравствуйте, ERA!
У меня есть такое. Если хотите могу выслать на E-mail.
Удачи!
--------- Не судите, да не судимы будете...
Ответ отправил: REFERI (статус: Студент)
Отправлен: 30.11.2005, 21:07
Вопрос № 30.510
В Delphi существует стандартная комп. TCalendar которая выводит день-месяц-год. Как ее преобразовать чтобы выводился только списик годов?
Отправлен: 30.11.2005, 12:41
Вопрос задал: SergBSI (статус: Посетитель)
Всего ответов: 6 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Rusland
Здравствуйте, SergBSI!
Компонент TCalendar мне неизвестен, но знаю что есть TDateTimePicker, у которого есть свойство Format. Пишем в нем значение "yyyy" и тогда будет отображатся только год (также представляет интерес его свойство DateMode). Удачи.
--------- Пресловутое недостающее звено между обезьяной и цивилизованным человеком - это как раз мы. (Конрад Лоренц)
Ответ отправил: Rusland (статус: Практикант)
Отправлен: 30.11.2005, 12:48 Оценка за ответ: 5
Отвечает: sir henry
Здравствуйте, SergBSI!
А при чем тут TCalendar? Засуньте в TComboBox или TListBox сколько Вам нужно годов, и будет Вам их список.
Если я неправильно Вас понял, уточните вопрос.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 30.11.2005, 13:03
Отвечает: Ataman N. N.
Здравствуйте, SergBSI!
А трудно сделать список годов в TComboBox?
Ответ отправил: Ataman N. N. (статус: 4-ый класс)
Отправлен: 30.11.2005, 16:31
Отвечает: Schmak
Здравствуйте, SergBSI!
Не знаю как у Вас , а у меня этот компонент называется TDateTimePicker.
В каком смысле списки (список) годов?
Если нужно. чтобы в строке выпадающего списка был написан только год то в свойстве Format данного компонента пропишите yyyyг.
--------- Не всё то Windows, что висит!
Ответ отправил: Schmak (статус: Студент)
Отправлен: 30.11.2005, 16:35
Отвечает: Golden Spider
Здравствуйте, SergBSI!
Ваш вопрос не очень ясен.
Вы хотите получить список лет в виде Tcalendar или что-то другое?
Если да то попробуйте использовать Tlistbox.
Пример внизу.
Приложение:
--------- Знания ничто! Хорошие знания Всё!
Ответ отправил: Golden Spider (статус: 2-ой класс)
Отправлен: 30.11.2005, 17:10
Отвечает: Лучников Юрий Владимирович
Здравствуйте, SergBSI!
Создать на основе этого компонента свой с нужными характеристиками