Вопрос № 46309: Здравствуйте, уважаемые эксперты! Подскажите, пожалуйста, можно ли как ни будь
проверить, объявлена ли процедура с данным именем в программе или нет? Заранее благодарен!...Вопрос
№ 46313: Здравствуйте, уважаемые эксперты!
У меня вопрос относительно тредов - можно ли при создании треда передать ему какие-то данные. Например, в цикле создается
новый тред, и как параметр ему передается значение счетчика цикла:
for i:=1 ...Вопрос № 46314: Здравствуйте! Я динамически создаю пункты меню(MainMenu)
и подпункты к ним. Функция создания подпункта принимает параметр parent(string) и, проходя циклом по уже имеющимся пунктам,
сравнивает их Caption с parent, делает свое дело, если они совпадают....Вопрос № 46316:
Здраво еХперты! Я знаю, что у строки можно поменять регистр,
то есть менять ЗАГЛАВНЫЕ БУКВЫ на обычные и на оборот. НО
есть проблема - я не знаю какими функциями это делается!
Кто знает подскажите.
И ещё вопрос: как средствами дельфи ...Вопрос № 46323: Добрый день , уважаемые!
Вопрос по компоненту AdvMenu.
На форме AdvMainMenu1 и AdvMenuFantasyStyler1.
Если написать
AdvMenuFantasyStyler1.Style:= fsArctic; то все замечательно
А если так
var S: string;
......
S:= '...Вопрос № 46326: Здравствуйте !
На форме есть Label1. Caption её '0'. Как сделать так, что бы через определённые промежутки времени, к 0 прибавлялось другое
число.
Т.е сначало был 0, потом прибавили 3 - стало три. Потом опять прибавили 3,
стало 6 и т.д.<...Вопрос № 46332: Очень простой вопрос не дающий мне покоя:
как вывести следующий формат времени: секунды, миллисекунды, микросекунды.
Например так: ss:msms:mksmks
..Вопрос № 46336: Уважаемые эксперты! У меня к вам еще один вопрос - как вывести
всплывающую подсказку в стиле WindowsXP для значка в трее?
Подсказки такого вида, например, выводятся в "Оповещении системы безопасности Windows"...Вопрос № 46345: Как можно преобразовать переменную типа word в переменную string?...Вопрос № 46351: Добрый вечер,уважаемые! У меня вопрос такой:
Во всех книжках по Delphi пишут, что при компиляции нужно обращать внимание на
появляющиеся сообщения компилятора (hints, warnings) и избавляться от них
как можно быстрее. Так вот у меня куча э...Вопрос № 46372: Обыскал всю Torry.net,
но так и не нашел компонента, с помощью которого можно рисовать штриховые рамки для выделения части рисунка, чтобы можно
было менять размеры рамки, ухватившись в угол рамки, чтоб можно было перетаскивать рамку в любую часть рис...
Вопрос
№ 46.309
Здравствуйте, уважаемые эксперты! Подскажите, пожалуйста, можно ли как ни будь проверить, объявлена ли процедура с данным
именем в программе или нет? Заранее благодарен!
Отвечает: Татьяна
Здравствуйте, Андрющенко Вячеслав Васильевич!
Боюсь утверждать, однако мне кажется, что такой возможности нет (особенно если функция в приватной части)
Однако есть способ, который возможно вам поможет.
Можно как бы обязать класс, чтоб он поддерживал ту или иную функцию.
Точнее концепция такова: существует понятие так называемого интерфейса (interface). Если какой-либо класс объявляет о том,
что он поддерживает какой-либо интерфейс, это означает, что он должен реализовать все функции данного интерфейса.
Некоторые статьи в приложении, однако, я думаю вы сами найдете дополнительную информацию если это вас заинтересует
Приложение:
--------- Возможно все. И ничего возможно тоже.
Ответ отправила: Татьяна (статус:
Студент)
Ответ отправлен: 15.06.2006, 13:49 Оценка за ответ: 5
Вопрос
№ 46.313
Здравствуйте, уважаемые эксперты!
У меня вопрос относительно тредов - можно ли при создании треда передать ему какие-то данные. Например, в цикле создается
новый тред, и как параметр ему передается значение счетчика цикла:
for i:=1 to 10 do <Создать тред и передать ему значение 'i'>
Отвечает: Татьяна
Здравствуйте, Олекса aka SoW!
Создайте класс TMyThread потомок от TThread и определите в нем конструктор с параметром.
Мне кажется это оптимальный вариант
--------- Возможно все. И ничего возможно тоже.
Ответ отправила: Татьяна (статус:
Студент)
Ответ отправлен: 15.06.2006, 14:00 Оценка за ответ: 5 Комментарий
оценки: Спасибо за идею!!!
Вопрос
№ 46.314
Здравствуйте! Я динамически создаю пункты меню(MainMenu) и подпункты к ним. Функция создания подпункта принимает параметр
parent(string) и, проходя циклом по уже имеющимся пунктам, сравнивает их Caption с parent, делает свое дело, если они совпадают.
ТАк вот, подскажите, пожалуйста, почему не выполняется условие:
if (Menu.Items[i].Caption = parent), а выполняется:
if (Menu.Items[i].Caption = '&' + parent)?
Хотя при создании указывается имя без амперсанта в начале! Заранее благодарен!
Отвечает: Ерёмин Андрей
Здравствуйте, Андрющенко Вячеслав Васильевич!
Потому что для меню включено свойство AutoHotkeys, которое автоматически добавляет горячие клавиши для каждого создаваемого
пункта. Чтобы избавиться от них, можно выключить это свойство, а лучше - просто слегка поправить условие: if (AnsiReplaceText(Menu.Items[i].Caption,'&','') = parent) Then ...
Не забудьте подключить модуль StrUtils.
--------- Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус:
Профессор) Россия, Тула WWW:Программирование на DELPHI: Всё для программиста. ICQ:
286837644 ---- Ответ отправлен: 15.06.2006, 14:02 Оценка за ответ: 5 Комментарий
оценки: Спасибо! Даже не мог подумать об этом=)
Это всего лишь мое мнение... Просто так работает система: во всех меню превым, точнее нулевым символом является &. По моим
наблюдениям...
Ответ отправил: Serg_6667 (статус:
2-ой класс)
Ответ отправлен: 15.06.2006, 14:06
Отвечает: Олекса aka SoW
Здравствуйте, Андрющенко Вячеслав Васильевич!
Все очень просто. В меню есть свойство AutoHotkeys, что автоматически создает горячие клавиши для пунктов меню. Это свойство
за умалчиванием стоит в true. Вам достаточно просто его выключить.
--------- Вік живи - вік учись.
Ответ отправил: Олекса aka SoW (статус:
2-ой класс)
Ответ отправлен: 15.06.2006, 14:06
Вопрос
№ 46.316
Здраво еХперты! Я знаю, что у строки можно поменять регистр,
то есть менять ЗАГЛАВНЫЕ БУКВЫ на обычные и на оборот. НО
есть проблема - я не знаю какими функциями это делается!
Кто знает подскажите.
И ещё вопрос: как средствами дельфи поставить самый большой
приоретет своей програме в винде? Да и вобще как в винде
выставляются приоритеты?
Отправлен: 15.06.2006, 14:25
Вопрос задал: Ploter (статус: Посетитель)
Всего ответов: 4 Мини-форум вопроса >>> (сообщений: 7)
Отвечает: Gh0stik
Здравствуйте, Ploter!
Отвечаю на первую часть вопроса:
Используйте функции UpperCase(s) - преобразовывает строку в верхний регистр; LowerCase(s) - преобразовывает строку в нижний регистр;
Переменная s:string;
--------- Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии
с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус:
Студент)
Ответ отправлен: 15.06.2006, 14:31
Отвечает: Савенко Вадим Иванович
Здравствуйте, Ploter!
LowerCase(cnst S: string): string - преобразует строку к нижнему регистру
UpperCase(cnst S: string): string - преобразует строку к верхнему регистру
Если используете русские буквы, то добавьте перед именем функции "Ansi"
AnsiLowerCase(cnst S: string): string - преобразует строку к нижнему регистру
AnsiUpperCase(cnst S: string): string - преобразует строку к верхнему регистру
Ответ отправил: Савенко Вадим Иванович
(статус: 2-ой класс)
Ответ отправлен: 15.06.2006, 14:35
Отвечает: Ерёмин Андрей
Здравствуйте, Ploter!
StrLower() - переводит строку в нижний регистр.
StrUpper() - переводит строку в верхний регистр.
Однако эти функции не работают с русским алфавитом, поэтому придётся написать самим. Вот пример:
function RusLower(Str: String): String; const
low: string = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя'; upp: string = 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ'; var i,p: integer; begin result:=str; for i:=1 to length(str) do begin p:=pos(str[i],low); if
p <= 0 then p:=pos(str[i],upp); if
p > 0 then
t> result[i]:=low[p]; end; end;
Для верхнего регистра совсем немного нужно подправить.
--------- Нет правила без исключений. Правило без исключений - исключение из правил.
Отвечает: Татьяна
Здравствуйте, Ploter!
По поводу первой части вам уже дали ответ.
Единственное, что могу добавить, если вам нужно совместное изменение, ну т.е. строчную на заглавную и заглавную на строчную,
то я вижу путь сравнения посимвольно, используя те же вышеприведенные функции
А по поводу приоритетов - есть апишки, ссылки в приложении
Приложение:
--------- Возможно все. И ничего возможно тоже.
Ответ отправила: Татьяна (статус:
Студент)
Ответ отправлен: 15.06.2006, 14:40
Вопрос
№ 46.323
Добрый день , уважаемые!
Вопрос по компоненту AdvMenu.
На форме AdvMainMenu1 и AdvMenuFantasyStyler1.
Если написать
AdvMenuFantasyStyler1.Style:= fsArctic; то все замечательно
А если так
var S: string;
......
S:= 'fsArctic';
AdvMenuFantasyStyler1.Style:= S;
то ошибка вылазит - несовместимые типы 'TFantasyStyle' и 'string'.
Как быть? Я хочу в настройках менять стиль меню и записывать его в ini- файл , чтобы при следующем запуске был этот сохраненный
ранее стиль ,а не выходит
Удачи!!!
--------- Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии
с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус:
Студент)
Ответ отправлен: 15.06.2006, 15:10
Отвечает: Проходящий Мимо
Здравствуйте, Савенко Вадим Иванович!
Конечно будет ошибка! Нужно привести тип TString к типу TFantasyStyle. В этом может помочь функция GetEnumValue(TypeInfo:
PTypeInfo; const Name: string): Integer;
Вот что об этом говорит дядя Borland:
uses
TypInfo;
type
TFruits = (apples, pears, grapes, bananas, oranges);
procedure FruitBeep (const fruitName : string);
var
Fruit : TFruits;
begin
Fruit := TFruits(GetEnumValue(TypeInfo(TFruits),fruitName));
case Fruit of
apples : Windows.Beep (440, 100);
pears : Windows.Beep (660, 100);
grapes : Windows.Beep (880, 10);
bananas : Windows.Beep (1320, 10)
else
Windows.Beep (70, 100)
end
end;
В Вашем случае нужно сделать так:
uses
TypInfo;
При этом Вы можете читать и писать значение в ini-файл. Дерзайте!
--------- Carpe diem!
Ответ отправил: Проходящий Мимо
(статус: 5-ый класс)
Ответ отправлен: 15.06.2006, 15:23 Оценка за ответ: 5 Комментарий
оценки: Вот это мне и надо было - не знал как преобразовать одит тип в другой.Спасибо!
Отвечает: Маренич Владимир
Здравствуйте, Савенко Вадим Иванович!
Попробуйте самы простой способ записывать и читать из ини-файла перечисляемых типов:
//запись
ini.WriteInteger('Section', 'ItemName', Ord(AdvMenuFantasyStyler1.Style));
//чтение
AdvMenuFantasyStyler1.Style:=TFantasyStyle(ini.ReadInteger('Section', 'ItemName', fsArctic));
Ответ отправил: Маренич Владимир
(статус: Студент)
Ответ отправлен: 15.06.2006, 18:16 Оценка за ответ: 5
Вопрос
№ 46.326
Здравствуйте !
На форме есть Label1. Caption её '0'. Как сделать так, что бы через определённые промежутки времени, к 0 прибавлялось другое
число.
Т.е сначало был 0, потом прибавили 3 - стало три. Потом опять прибавили 3,
стало 6 и т.д.
Отправлен: 15.06.2006, 15:15
Вопрос задал: Vic (статус: 1-ый класс)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 3)
Отвечает: Ерёмин Андрей
Здравствуйте, Vic!
Поместите на форму TTimer (вкладка System). Установите Interval например в 3000 (3 секунды), а в его обработчике - следующее:
Label1.Caption:=IntToStr(StrToInt(Label1.Caption)+3);
--------- Нет правила без исключений. Правило без исключений - исключение из правил.
Ставим на форму Timer1 (вкладка компонентов System):
Обработчик для Timer1:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Label1.Caption:=inttostr(strtoint(Label1.Caption)+3);
end;
--------- Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии
с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус:
Студент)
Ответ отправлен: 15.06.2006, 15:25
Отвечает: PheanixN
Здравствуйте, Vic!
Все очень просто. Используйте таймер. Например
Label1.Caption := '0';
1. StrToInt(Label1.Caption) - Преобразование из строки в число
2. Прибавляем число
3. Преобразовывем обратно в строку IntToStr(StrToInt(Label1.Caption) + 3)) и присваиваем метки.
Ответ отправил: PheanixN (статус:
1-ый класс)
Ответ отправлен: 15.06.2006, 19:05
Вопрос
№ 46.332
Очень простой вопрос не дающий мне покоя: как вывести следующий формат времени: секунды, миллисекунды, микросекунды.
Например так: ss:msms:mksmks
Отправлен: 15.06.2006, 17:06
Вопрос задал: SUPcOZA (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 7)
Отвечает: Савенко Вадим Иванович
Здравствуйте, SUPcOZA!
Есть процедура DecodeTime(Time: TDateTime; var Hour, Min, Sec, MSec: word);
Разбивает время Time на час, минуту, секунду и милисекунду
Ответ отправил: Савенко Вадим Иванович
(статус: 2-ой класс)
Ответ отправлен: 15.06.2006, 17:46
Отвечает: Олекса aka SoW
Здравствуйте, SUPcOZA!
До предыдущего ответа прибавлю, что еще есть специальная функция, что превращает дату в строку:
function FormatDateTime(const Format:string; DateTime:TDateTime):string;
Но микросекунды узнать так невозможно.
Например, чтобы вывести время в формате чч:мм:сс нужно написать следующее:
procedure TForm1.Button1Click(Sender: TObject);
var Format:string;
begin
Format:='hh:nn:ss';
Label1.Caption:=FormatDateTime(Format, Time());
//Time() - функия возвращает текущее время
end;
--------- Вік живи - вік учись.
Ответ отправил: Олекса aka SoW (статус:
2-ой класс)
Ответ отправлен: 15.06.2006, 18:08
Отвечает: Маренич Владимир
Здравствуйте, SUPcOZA!
s:=FormatDateTime('nn:ss.zzz', Time); Получите время в формате минуты:секунды.миллисекунды (например, 3:14.159). А микросекунды
операционку еще не научили считать :)
Ответ отправил: Маренич Владимир
(статус: Студент)
Ответ отправлен: 15.06.2006, 18:22
Вопрос
№ 46.336
Уважаемые эксперты! У меня к вам еще один вопрос - как вывести всплывающую подсказку в стиле WindowsXP для значка в трее?
Подсказки такого вида, например, выводятся в "Оповещении системы безопасности Windows"
Отвечает: Ерёмин Андрей
Здравствуйте, Олекса aka SoW!
Если вы используете компонент CoolTrayIcon для размещения иконок
в системном трее, то с его помощью вызвать "пузырь" очень легко: TrayIcon1.ShowBalloonHint('title','text',bitInfo,10); --------- Нет правила без исключений. Правило без исключений - исключение из правил.
Отвечает: Савенко Вадим Иванович
Здравствуйте, Олекса aka SoW!
Посмотрите на www.shellplus.com компонент Shell+. Там и примеры можно скачать.SxTrayIcon например позволяет не только balloon
показать, но и целое окно в него затолкать.
Ответ отправил: Савенко Вадим Иванович
(статус: 2-ой класс)
Ответ отправлен: 15.06.2006, 19:09 Оценка за ответ: 5
Вопрос
№ 46.345
Как можно преобразовать переменную типа word в переменную string?
Отправлен: 15.06.2006, 20:09
Вопрос задал: Sysanin (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Устинов Сергей Евгеньевич
Здравствуйте, Sysanin!
Word - это целочисленный тип.
Для преобразования из целочисленного типа в строковой служит функция
IntToStr();
Приложение:
--------- Ответы на все вопросы - на сайте www.ya.ru
☺
Ответ отправил: Устинов Сергей Евгеньевич
(статус: Студент)
Ответ отправлен: 15.06.2006, 20:15 Оценка за ответ: 5
Отвечает: Савенко Вадим Иванович
Здравствуйте, Sysanin!
Думаю, что вот так:
var
w: word;
s: string;
begin
s:= IntToStr(w);
end;
Ответ отправил: Савенко Вадим Иванович
(статус: 2-ой класс)
Ответ отправлен: 15.06.2006, 20:16 Оценка за ответ: 5
Отвечает: Coupler
Здравствуйте, Sysanin!
Есть много вариантов. Например, можно еще вот так:
procedure TForm1.Button1Click(Sender: TObject);
var
i: word;
stroka: string;
begin
str(i, stroka);
end;
Ответ отправил: Coupler (статус:
Студент)
Ответ отправлен: 17.06.2006, 08:40
Вопрос
№ 46.351
Добрый вечер,уважаемые! У меня вопрос такой:
Во всех книжках по Delphi пишут, что при компиляции нужно обращать внимание на
появляющиеся сообщения компилятора (hints, warnings) и избавляться от них
как можно быстрее. Так вот у меня куча этих warning-ов, которые однако не мешают
программе компилироваться и нормально работать.А warning-и такие
w1005 Unit 'FileCtrl' is specific to a platform
w1005 Unit 'ShellCtrls' is specific to a platform
w1002 Symbol 'faReadOnly' is specific to a platform
w1002 Symbol 'FindData' is specific to a platform
Так вот нужно ли избавляться от них и если да то как?
Заранее благодарю!
Отвечает: Устинов Сергей Евгеньевич
Здравствуйте, Савенко Вадим Иванович!
Для отключения такого типа сообщений делай так (до того uses, в котором объявлены эти модули) {$WARN UNIT_PLATFORM OFF}
В помощи Делфи написано:
The whole unit is tagged (using the platform hint directive) as one that contains material that may not be available on all
platforms. If you are writing cross-platform applications, it may cause a problem. For example, a unit that uses objects
defined in OleAuto might be tagged using the PLATFORM directive
--------- Ответы на все вопросы - на сайте www.ya.ru
☺
Ответ отправил: Устинов Сергей Евгеньевич
(статус: Студент)
Ответ отправлен: 15.06.2006, 21:11 Оценка за ответ: 5 Комментарий
оценки: Спасибо!
Отвечает: Олекса aka SoW
Здравствуйте, Савенко Вадим Иванович!
Сообщение 'specific to а platform' означает, что тип использованных данных присутствует только на данной платформе. Если
вы не программируете на платформе .NET, то можете не обращать на них внимания, или просто исключить отображение данных сообщений
в Project->Options->CompilerMessages.
--------- Вік живи - вік учись.
Ответ отправил: Олекса aka SoW (статус:
2-ой класс)
Ответ отправлен: 15.06.2006, 22:14
Вопрос
№ 46.372
Обыскал всю Torry.net, но так и не нашел компонента, с помощью которого можно рисовать штриховые рамки для выделения части
рисунка, чтобы можно было менять размеры рамки, ухватившись в угол рамки, чтоб можно было перетаскивать рамку в любую часть
рисунка.
Может быть кто-нибудь знает такой компонент? Или пример кода, который это реализует?
Буду благодарен всем, кто ответит.
Отправлен: 16.06.2006, 00:53
Вопрос задал: Xsid (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: sir henry
Здравствуйте, Xsid!
А Вы совершенно напрасно лазили в компоненты. :)
Такое надо искать в готовых программах графических редакторов и никак иначе:
http://www.torry.net/pages.php?id=578
Ответ отправил: sir henry (статус:
Академик) Россия, Красноярск ---- Ответ отправлен: 16.06.2006, 06:14 Оценка за ответ: 5 Комментарий оценки: Спасибо, я тоже так думал, но надеялся
в глубине души, что все-таки есть компонент.