Вопрос № 63480: Как узнать температуру процессора?...Вопрос № 63507: Здравствуйте!
Напишите, пожалуйста, пример программы, на чистом API, суть которой в следующем: программка мирно запускается и периодически проверяет систему на наличие окна с именем, скажем myform1, если окно имеется ищет в ней кнопку с текстом '...Вопрос № 63516: Здравствуйте, уважаемые!
Поборов стыд, решил обратиться к вам.
Есть таблица *.DB, управляемая Query. Далее DataSource-> DBGrid. Всё, как учили (классически).
В DBGrid делаю сортировку с помощью SQL запроса к Query: 'SELECT * FROM Tabl...Вопрос № 63535: Здраствуйте уважаемые эксперты, помогите пожал мне написать программу для обработки 15 целых чисел: найти количество отрицательных чисел и подсчитать разность положительных чисел.
Очень надеюсь на вашу помощь, спасибо....Вопрос № 63536: Привет. Я студент, мне надо штоб при нажатии кнопки комп выключался (перегружалса, завершал сеанс...), и ищо мне нада узнать имя пользователя. Помогите пожалуста. Пишлите ответ на fg.viktor@rambler.ru...Вопрос № 63539: Доброго времени суток!
К моему вопросу о программе на API. Всё в принципе так, но одно НО! Мне важно узнать активна ли сама кнопка. Программа, которой нужно управлять пока ведёт обработку файлов делает кнопки не активными, именно так я и хочу узн...Вопрос № 63540: Здравствуйте уважаемые эксперты! Написал программу в которой в элемент Image помещается рисунок (карта) , потом методом канвы LineTo рисуются линии поверх этого рисунка, и результат сохраняется в файл. Пока используются файлы
*.BMP все работает замеч...Вопрос № 63549: Доброго времени суток!
Извените за навязчивость.
У меня цель узнать активность кнопки, а не формы.
Форма всегда остаётся активной. Кнопка "Обработка" на время выполнения программы становится серой- не активной.
Вот как узнат...Вопрос № 63550: Здраствуйте.
Как в делфи ввести в массив 15 чисел, но не рандомно, а самому ?...Вопрос № 63574: Уважаемые эксперты.
Не подскажите, как сделать в Delphi 2006, чтобы участок кода компилировался, в Debug версии, а в Release версии этот участок кода не компилировался....Вопрос № 63599: Уважаемые Эксперты! Нуждаюсь в Вашей помощи.
Каким образом программно нажать кнопку "Минимизировать окно"? Если можно, приведите пример.
Заранее благодарный....
Отвечает: sir henry
Здравствуйте, 3лоумышленник!
Вот здесь есть очень интересная статейка по этому поводу:
http://www.megalib.com/books/461/mastering/wmi.htm
Ответ отправил: sir henry (статус: Академик) Россия, Красноярск ---- Ответ отправлен: 21.11.2006, 09:36 Оценка за ответ: 4 Комментарий оценки: Это не совсем то. Хотелось бы что-нибудь попроще, без навороченных библиотек и СДК. Тем более от M$. К тому же мой опыт программирования научил избегать продуктов "творчества" Майкрософт, предназначенных для программистов (например, COM-технологий, .NET). Т. к. это неизбежно ведёт к тормозам,
глючности и гемморою.
Вопрос № 63.507
Здравствуйте!
Напишите, пожалуйста, пример программы, на чистом API, суть которой в следующем: программка мирно запускается и периодически проверяет систему на наличие окна с именем, скажем myform1, если окно имеется ищет в ней кнопку с текстом 'mybutgo', проверяет активна ли эта кнопка, если да нажимает её (после этого кнопка становится не активной). После нажатия кнопки начинает выполнятся программа (myform1), после выполнения кнопки, вновь становятся активными и нужно нажать на кнопочку с надписью 'bnexit'. Если не сложно
напишите на Ассемблере или на Delphi, в крайнем случае на C. Буду очень благодарен!.
Заранее огромное спасибо!
Отправлен: 21.11.2006, 07:04
Вопрос задал: Prowler (статус: 1-ый класс)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Кулаков Антон Сергеевич /SandroNec
Здравствуйте, Prowler!
В приложении код программы которая болтается в оперативке и ищет окно с заголовком 'Form1' если находит то ищет на этом окне кнопку 'Button1' затем нажимает ее и ищет кнопку 'Button2' когда находит нажимает и ее при условии доступности 'Button1'. Во второй программе на нажатие кнопки 'Button1' происходит следующее
button1.enabled := false;
необходимый код для выполнения
button2.enabled := true;
На нажатие 'Button2' происходит просто form1.close;
Советую использовать в таймере или хотя бы добавить в код Sleep();
иначе система много процессорного времени тратит на эту прогу
Приложение:
--------- Настоящий программист на вопрос - "можешь ли ты это сделать", всегда ответит - "да", а потом подумает как
Здравствуйте, уважаемые!
Поборов стыд, решил обратиться к вам.
Есть таблица *.DB, управляемая Query. Далее DataSource-> DBGrid. Всё, как учили (классически).
В DBGrid делаю сортировку с помощью SQL запроса к Query: 'SELECT * FROM Table ORDER BY Name'.
С удалением одной записи, выбранной в DBGrid, проблем нет. Запоминаю её индекс, устанавливаю простой SQL запрос, удаляю запись, возвращаюсь к прежнему запросу, перехожу на соседнюю запись в таблице.
Как мне быть, если надо удалить несколько записей, выделенных в DBGrid? Bookmark не спасают, т.к. они действительны только до смены SQL запроса.
Среда D7.
Спасибо.
Отправлен: 21.11.2006, 08:51
Вопрос задал: Zoof (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 3)
Отвечает: sir henry
Здравствуйте, Zoof!
1. У каждой записи в таблице должен быть уникальный идентификатор, поэтому после Выделения строк а Гриде нужно в параметр запроса передать уникальные номера этих записей. Удаление будет происходить с условием что уникальный номер записи будет входить в список тех номеров, что Вы передали в запрос, типа:
DELETE FROM Table1 WHERE id IN (Список_номеров)
2. В SQL более продвинутый и более быстрый способ манипуляции записями, когда они обрабатываются по какому-либо групповому признаку.
Например у Вас есть список сотрудников. Вы выделяете в гриде группу записей и делаете это по признаку, что эти сотрудники уволились. Тогда SQL запрос будет составляться с условием, что дата увольнения в таблице непуста.
3. Бывает так, что нету определенного логического признака, по которым будет происходить выборка записей. Например Вы решили выделить в гриде группу сотрудниц, которые лично Вам симпатичны. :) Тогда можно завести в таблице дополнительное логическое поле (Pometka), куда Вы будете ставить птичку, если запись в Гриде выбрана. Удаление будет выглядеть так:
DELETE FROM Table1 WHERE Pometka
Ответ отправил: sir henry (статус: Академик) Россия, Красноярск ---- Ответ отправлен: 21.11.2006, 09:21
Вопрос № 63.535
Здраствуйте уважаемые эксперты, помогите пожал мне написать программу для обработки 15 целых чисел: найти количество отрицательных чисел и подсчитать разность положительных чисел.
Очень надеюсь на вашу помощь, спасибо.
Отвечает: monah
Здравствуйте, Никитин Андрей Валерьевич!
var
i, count, subb, pred:integer;
a:array[1..15] of integer;
begin
count:=0;
pred:=0;
for i:=1 to 15 do
if a[i]<0 then inc(count)
else
begin
if pred=0 then
begin
Pred:=i;
Subb:=a[i];
end else subb:=subb-a[i];
end;
Showmessage('Найдено отрицательных чисел '+inttostr(count)+#10#13+
'Разность положительных чисел равна '+inttostr(Subb));
end;
--------- festina lente
Ответ отправил: monah (статус: Студент)
Ответ отправлен: 21.11.2006, 11:20
Отвечает: PaVeL_Ekt
Здравствуйте, Никитин Андрей Валерьевич!
вот пожалуйста !!!
Тока в разности может ошибка быть !!!
(просто я не совсем понял разность м-у какими числами)
но думаю смысел понятен !!!
Приложение:
--------- Да поможет Вам F1, да сохранит Вас F2, во имя CTRL, ALT и святого DEL
Ответ отправил: PaVeL_Ekt (статус: 4-ый класс)
Ответ отправлен: 21.11.2006, 11:21 Оценка за ответ: 5
Отвечает: Sattar
Здравствуйте, Никитин Андрей Валерьевич!
procedure TForm1.Button1Click(Sender: TObject);
var
a:array[1..15] of integer;
i,k,j,n:integer;
begin
Randomize;
for i:=1 to 15 do
begin
a[i]:=random(20);
k:=random(3);
if k=2 then a[i]:=a[i]*(-1);
end;
k:=0;
for i:=1 to 15 do
if a[i]<0 then inc(k);
ShowMessage('Відємних чисел '+inttostr(k));
n:=15-k;
k:=0;
For i:=1 to 14 do
For j:=i+1 to 15 do
if a[i]>0 then
if a[i]=a[j] then
inc(k);
showmessage('Знайдено додатніх чисел '+inttostr(n-k));
end;
Ответ отправил: Sattar (статус: 4-ый класс)
Ответ отправлен: 25.11.2006, 14:40
Вопрос № 63.536
Привет. Я студент, мне надо штоб при нажатии кнопки комп выключался (перегружалса, завершал сеанс...), и ищо мне нада узнать имя пользователя. Помогите пожалуста. Пишлите ответ на fg.viktor@rambler.ru
Как узнать имя пользователя в приложении код функции, которая позволяет это сделать...
Удачи!!!
Приложение:
--------- Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Практикант)
Ответ отправлен: 21.11.2006, 11:55
более подробно про функции системных модулей запускаемых с помощью RunDLL32.exe можно прочитать:
http://kerberos666.narod.ru/faq/rundll.htm
--------- Да поможет Вам F1, да сохранит Вас F2, во имя CTRL, ALT и святого DEL
Ответ отправил: PaVeL_Ekt (статус: 4-ый класс)
Ответ отправлен: 21.11.2006, 12:30
Вопрос № 63.539
Доброго времени суток!
К моему вопросу о программе на API. Всё в принципе так, но одно НО! Мне важно узнать активна ли сама кнопка. Программа, которой нужно управлять пока ведёт обработку файлов делает кнопки не активными, именно так я и хочу узнать когда программа отработает. После её работы моя прожка ещё много чего должна сделать. Вообще, по сути, это шедуллер для одной конкретной цели!
Отправлен: 21.11.2006, 12:06
Вопрос задал: Prowler (статус: 1-ый класс)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Кулаков Антон Сергеевич /SandroNec
Здравствуйте, Prowler!
вот поправка к моему коду
button := findwindowex(form,0,nil,'Button2');
if button <> 0 then begin
if iswindowenabled(findwindowex(form,0,nil,'Form1') then begin
sendmessage(button,bm_click,0,0);
com := false;
end;
end;
--------- Настоящий программист на вопрос - "можешь ли ты это сделать", всегда ответит - "да", а потом подумает как
Здравствуйте уважаемые эксперты! Написал программу в которой в элемент Image помещается рисунок (карта) , потом методом канвы LineTo рисуются линии поверх этого рисунка, и результат сохраняется в файл. Пока используются файлы *.BMP все работает замечательно. Добавил поддержку *.JPG - файлы загружаются в компонент, выгружаются из него, но вся работа с канвой вызывает ошибки. Вопрос: подскажите пожалуйста, что сделать чтобы стала доступна работа с канвой при работе с файлами *.JPG. Как можно преобразовать Graphics
в Bitmap для рисования на рисунке, а затем обратно, для сохранения в *.JPG?
Заранее спасибо, Александр.
Отправлен: 21.11.2006, 12:33
Вопрос задал: Shurik_od (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: PaVeL_Ekt
Здравствуйте, Shurik_od!
Для преобразования я делал так
Var Img:TBitMap;
begin
Img:=TBitMap.Create;
Img.assign(Image1.Picture.Graphics);
и все в Img находиться Ваша картинка !!!
--------- Да поможет Вам F1, да сохранит Вас F2, во имя CTRL, ALT и святого DEL
Ответ отправил: PaVeL_Ekt (статус: 4-ый класс)
Ответ отправлен: 21.11.2006, 12:40 Оценка за ответ: 5
Отвечает: Сухомлин Кирилл Владимирович
Здравствуйте, Shurik_od!
У TJpegImage нет свойства Canvas, напрямую рисовать на нем нельзя. Можно загрузить файл в TJpegImage, затем через буффер программно скопировать его на обычный Image/BitMap и после рисования, через буфер скопировать назад.
В приложении пример кода, взят отсюда, найдено Яндексом
Приложение:
--------- Не узнаешь - не попробуешь.
Ответ отправил: Сухомлин Кирилл Владимирович (статус: Практикант)
Ответ отправлен: 21.11.2006, 13:02 Оценка за ответ: 5
Отвечает: monah
Здравствуйте, Shurik_od!
Для работы сохраните jpeg как bmp файл.Как это сделать, смотрите приложение.
Приложение:
--------- festina lente
Ответ отправил: monah (статус: Студент)
Ответ отправлен: 21.11.2006, 15:25 Оценка за ответ: 5
Вопрос № 63.549
Доброго времени суток!
Извените за навязчивость.
У меня цель узнать активность кнопки, а не формы.
Форма всегда остаётся активной. Кнопка "Обработка" на время выполнения программы становится серой- не активной.
Вот как узнать активна ли эта кнопка или нет, имея её дескриптор меня сейчас и интересует.
Отправлен: 21.11.2006, 13:41
Вопрос задал: Prowler (статус: 1-ый класс)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Кулаков Антон Сергеевич /SandroNec
Здравствуйте, Prowler!
Внимательно просмотрите код, там проверяется на доступность именно кнопка а не форма
--------- Настоящий программист на вопрос - "можешь ли ты это сделать", всегда ответит - "да", а потом подумает как
Отвечает: sir henry
Здравствуйте, Никитин Андрей Валерьевич!
1. Можно разместить на форме 15 компонентов типа Edit, занести туда числа, потом, при нажатии на кнопку, считать из них значения в массив.
2. Можно воспользоваться функцией InputBox() и вызывать ее в цикле 15 раз. Будет выскакивать специальное окошко для ввода какого-нибудь значения.
3. Можно поместить все цифры в текстовый файл и считывать их из файла.
Ответ отправил: sir henry (статус: Академик) Россия, Красноярск ---- Ответ отправлен: 21.11.2006, 14:16 Оценка за ответ: 3
Отвечает: Мишин Михаил
Здравствуйте, Никитин Андрей Валерьевич!
В приложении самый простой способ:
Приложение:
Ответ отправил: Мишин Михаил (статус: 1-ый класс)
Ответ отправлен: 21.11.2006, 14:16
Отвечает: Писарев, Павел, Юрьевич
Здравствуйте, Никитин Андрей Валерьевич!
Это лучше всего сделать через компанет TStringGrid.
Ответ отправил: Писарев, Павел, Юрьевич (статус: 1-ый класс)
Ответ отправлен: 21.11.2006, 23:24
Вопрос № 63.574
Уважаемые эксперты.
Не подскажите, как сделать в Delphi 2006, чтобы участок кода компилировался, в Debug версии, а в Release версии этот участок кода не компилировался.
Отправлен: 21.11.2006, 16:52
Вопрос задал: Melamed (статус: 8-ой класс)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: sir henry
Здравствуйте, Melamed!
Можно объявить специальную директиву DEBUG:
{$DEFINE DEBUG}
...
{Код, который компилируется в любом случае}
{$IFDEF DEBUG}
...
{Код, который компилируется только для директивы DEBUG}
...
{$ENDIF}
В этом случае программа будет скомпилирована со всем включенным в нее кодом. Если надо при компиляции исключить код для DEBUG, то нужно закоментировать {$DEFINE DEBUG} и перекомпилировать программу, тогда она скомпилируется без участка кода помещенного в{$IFDEF DEBUG}...{$ENDIF}
Ответ отправил: sir henry (статус: Академик) Россия, Красноярск ---- Ответ отправлен: 21.11.2006, 17:11 Оценка за ответ: 5 Комментарий оценки: Все подходит. Только не надо строки {$DEFINE DEBUG} А чтобы код компилировался
только в debug версии программы достаточно его заключить в следующ
091;ю конструкцию
... {Код компилируется в любом случае} {$IFDEF DEBUG}
... {Код компелируется только в DEBUG-версии} {$ENDIF}
{Код компилируется в любом случае} ...
А так спасибо за ответ. Он правда н
77; совсем точень но наводит на правильное решение. А это самое важное :) Поэтому и пятак заслуженный
Вопрос № 63.599
Уважаемые Эксперты! Нуждаюсь в Вашей помощи.
Каким образом программно нажать кнопку "Минимизировать окно"? Если можно, приведите пример.
Заранее благодарный.
Отправлен: 21.11.2006, 20:26
Вопрос задал: Богдан (статус: Посетитель)
Всего ответов: 4 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Н.В.
Здравствуйте, Богдан!
Если надо свернуть собственное приложение, то используйте application.Minimize;
Если чужое, у которого известен заголовок, то смотрите пример в приложении.
Удачи!
Приложение:
Ответ отправил: Н.В. (статус: 10-ый класс)
Ответ отправлен: 21.11.2006, 20:34
Отвечает: Кулаков Антон Сергеевич /SandroNec
Здравствуйте, Богдан!
Вот вам еще один вариант для минимизации чужого окна:
var
h : hwnd;
begin
h := findwindow(nil,'Заголовок окна');
if h <> 0 then sendmessage(h,wm_syscommand,sc_minimize,0);
end;
Пробуйте. соответсвенно для возвращения в нормальный вид: sc_restore, а максимизировать sc_maximize;
Удачи
--------- Настоящий программист на вопрос - "можешь ли ты это сделать", всегда ответит - "да", а потом подумает как
Отвечает: KiberZero
Здравствуйте, Богдан!
Минимизировать окно можно разными способами, в зависимости, какой именно вариант минимизации вам нужен.Если простейший вариан - минимизация до пиктограммы, то это:
procedure TForm1.Button1Click(Sender: TObject);
begin
WindowState:=wsMinimized;
end;
Тут используется свойство формы WindowState (wsNormal, wsMinimized, wsMaximized).
Ответ отправил: KiberZero (статус: 1-ый класс)
Ответ отправлен: 24.11.2006, 21:17
Отвечает: Sattar
Здравствуйте, Богдан!
procedure TForm1.Button1Click(Sender: TObject);
begin
Application.Minimize;
end;
Ответ отправил: Sattar (статус: 4-ый класс)
Ответ отправлен: 25.11.2006, 14:47