Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по Delphi

Автор: FighterZP
Дата сообщения: 15.06.2005 16:04
OdesitVadim

точно! у меня определяет хэндл окна, но не определяет хэндл компонента....
хммм....
как быть?
Автор: OdesitVadim
Дата сообщения: 15.06.2005 17:30
Значит имя класа указано неверно. Возьми Spy++ (кажеться так он называется, в дистрибутиве VC есть, даже устанавливать не надо) Там есть такая возможность с помощью курсора тыкнуть в нужное окно, а он те покажет всё подноготную.
Если негде достать, то пошлю маленькую прогу, которая поможет (аналог Spy++, но достаточно обделённый)
Может быть маленькая пакость со стороны проги - если Edit не настоящий - тоесть рисуется програмно. тогда будет очь напряжно.
Автор: ShIvADeSt
Дата сообщения: 16.06.2005 00:59
FighterZP
Для начала случайно едит не лежит на какой нить панели? Если да, то его родительский класс будет как раз эта панель.

Цитата:
с помошью WINSIGN32 узнал что имя компонета - EDIT ......


Цитата:
Может быть маленькая пакость со стороны проги - если Edit не настоящий - тоесть рисуется програмно. тогда будет очь напряжно.

То есть компонент не рисуется программно.

Цитата:
или даже можно следующим образом - по умолчанию при открытии формы, фокус ввода уже стоит на компоненте EDIT, и в буфере обмена Винды у меня уже хранятся необходимые для пересылки данные,

Делай след. образом. Получай буфер обмена GetClipboardData и далее по списку или аналог из VCL, а потом делаешь окно с едитом активным SetForegroundWindow (если ось выше Вынь 9х то при помощи небольшого изменения кода, оно все равно выкидывается на передний план, а не мигает в панели задач) и потом посимвольно работаешь с текстом клипборда и для каждого символа делаешь keybd_event этим ты эмулируешь посылку в едит (так как там уже стоит фокус) символов как если бы они вводились с клавиатуры. Второй вариант, это без получения клипбоарда. Просто делаешь окно активын при помощи той же функции и при помощи keybd_event посылаешь туда CTRL+V. Примеры как это сделать уже разбирались. Только вот помню что посылался CTRL+F в контрол.
Кстати для того чтобы удобно было смотреть как называется контрол и где он лежит я юзаю плагин для тотал коммандера называемый Task Manager он по Ф3 на процессе показывает все его контролы и кто кому принадлежит. И их названия.
Автор: FighterZP
Дата сообщения: 16.06.2005 08:00
ShIvADeSt

мой EDIT действительно лежит на панельке на форме программы ....
значит сперва я определяю хэнд моего окна,
потом с помошью хэндла окна я определяю хэндл панельки
затем по хендлу панельки - хэндл EDITа
а затем туда посылаю данные .....
попробую .....

Пасиб на счет TASK MANAGERA в TOTAL COMMANDERе....
CAPTION - у моего EDIT нету
CLASS - EDIT
HANDLE - 00010410


Добавлено:
ВСЕ!!!!! ПОЛУЧИЛОСЬ!

сама проблема в том что обычно посылается сообщение по CAPTION компонента
но особенность EDIT компонентов - его отсутствие.
посему попробывал найти компонент по имени класса и по пустому CAPTION

wHandle:=FindWindowEx(wHandle,0,'Edit','');

компонент отлично находится и ему посылаются любые данные

удачи

всем спасибо за помощь
Автор: int23
Дата сообщения: 16.06.2005 13:04
В D2005 переодически перестаёт работать сочетание Ctrl+C, Ctrl+V. Кто-нить сталкивался. А то запарился перезапускать IDE.....А у меня грузится она долго
Автор: MrZeRo
Дата сообщения: 16.06.2005 17:19
int23
У меня установлены 3 апдейта, и такого не наблюдается.
За апдейтами идти сюда: hXXp://forum.ru-board.com/topic.cgi?forum=35&bm=1&topic=0176&start=1360
Автор: Bol970
Дата сообщения: 20.06.2005 09:15
Здравия желаю All.

такая проблема
нужно произвести действие после resize form
т.е. после того как я изменил размер и отпустил left button mouse
вопрос как его отловить?
Автор: ShIvADeSt
Дата сообщения: 20.06.2005 09:30
Bol970
Смотри сообщение WM_SYSCOMMAND. Надо писать обработчик на него.
Автор: MICROPOM
Дата сообщения: 20.06.2005 12:34
Я хочу определить размер указанного диска. Число выдаётся фиг знает какое.
Т.е. не размер, а свободное место.

Делаю я так:

var
X: Integer;


begin
...
X:= DiskFree(0);
MessageDlg('Свободно на текущем диске: '+ IntToStr(Х)+' байт', mtInformation, [mbOk], 0)
...
end;
Автор: int23
Дата сообщения: 20.06.2005 13:40
MrZeRo
У меня установлены 3 апдейта, и такого не наблюдается.

У меня 3 апдейта. Получается так. Я выделяю в инспекторе объектов значение свойства. И пытаюсь его скопировать. Более того в меню Edit кнопки копировать и вставки становятся не активными. Неужеле нельзя скопировать значения свойств?
Автор: Solnake
Дата сообщения: 20.06.2005 23:41
Как мне из одного модуля передать в второй переменную?
Тоесть, обясняю полностю задачу:
НА одной форме выбирается из таблицы какой-то елемент, и чтобы его открыть для редактирования в следующей формае, нужно в модуле редактирования дать запрос с id редактируемого елемента.
Жду помощи.
Автор: ShIvADeSt
Дата сообщения: 21.06.2005 01:11
Solnake
Во втором модуле в uses пишешь первый модуль. Потом там где тебе надо получить id пишешь следующее. id:=ИмяПервойФормы.НавзаниеТаблицы.(здесь пишешь из какого поля тебе надо получить айди); Например
id:=frmMain.Table1.FieldByName('MyField').AsInteger;
Автор: FAngel
Дата сообщения: 21.06.2005 07:20
MICROPOM
WinApi - GetDiskFreeSpace
Автор: Felan
Дата сообщения: 21.06.2005 08:51
Solnake
Кажется тебе лучше вот это почитать
http://www.delphikingdom.ru/asp/viewitem.asp?catalogid=729
Автор: Bonivur
Дата сообщения: 21.06.2005 12:43
Как можно осуществить вывод форматированного текста (жирный шрифт, цвет, размер)? Размер самого текста не маленький, так что нужен встроенный редактор. И главное - без внешних файлов. Чтобы текст встраивался в exe. Существует ли такой компонент. RichView не предлагать - как я понял там надо вручную каждую строку вписывать через AddNL( ... ) а это мне не подходит. Загружать извне тоже не годится.
Автор: ViktorSila
Дата сообщения: 21.06.2005 13:44
Как узнать на каком из физических дисков находится логический, т.е. есть C,D,E,F ... и есть 2 винта. Как определить какой логич. диск относится к какому винту???
Автор: EZH
Дата сообщения: 21.06.2005 13:51
ViktorSila
Просто посмотри в диспетчере дисков (управление компьютером)

Добавлено:
Ой, сорри, не заметил что раздел по программированию...
Автор: Kustarnik
Дата сообщения: 21.06.2005 14:03
Bonivur, попробуй TMS (HTMLControls, ParamControls (Label, StaticText) or RTFLabel )
Автор: Solnake
Дата сообщения: 21.06.2005 15:40
ShIvADeSt

Цитата:
Во втором модуле в uses пишешь первый модуль. Потом там где тебе надо получить id пишешь следующее. id:=ИмяПервойФормы.НавзаниеТаблицы.(здесь пишешь из какого поля тебе надо получить айди); Например
id:=frmMain.Table1.FieldByName('MyField').AsInteger;


Не работает, я это уже пробовал.
Пишет,что не находит такого поля в таблице.
В то время, когда обращаюсь вот-также в модуле , где находится таблица:

Код: ID:=qAssort.FieldByName('AssortID').AsInteger;
Автор: Bonivur
Дата сообщения: 21.06.2005 21:40
Kustarnik
RTFLabel в TMS подходит на 90 процентов. Одна только проблема - нет скроллинга Как помочь? А HTML компоненты требуют вроде IE 5.5 или выше. Так ли это? ГДе вообще можно скачать хелп для TMS + все демо (не только для AdvGrid)?
Автор: Kustarnik
Дата сообщения: 21.06.2005 23:08
Bonivur, HTML компоненты ничего не требуют, только знания mini html от tms


Добавлено:
Ссылки на TMS Samples, в т.ч. и на html controls были на форуме "Коммерческие компоненты и утилиты для Delphi/BCB" (ищи там (см. версию для печати )).
Автор: Solnake
Дата сообщения: 21.06.2005 23:11
Усе парни, розобрался, научили работать с property. Прикольная фича.
Автор: Felan
Дата сообщения: 22.06.2005 08:05
Solnake

Цитата:
НА одной форме выбирается из таблицы какой-то елемент, и чтобы его открыть для редактирования в следующей формае, нужно в модуле редактирования дать запрос с id редактируемого елемента.
Жду помощи.

Твой id редактируемого элемента - есть параметр диалога. Так что все подходит.
Автор: Solnake
Дата сообщения: 22.06.2005 09:50
Felan

Цитата:
Твой id редактируемого элемента - есть параметр диалога. Так что все подходит.

Понял, спасиба за желание помочь, но уже зделал другим способом.
Автор: Nicka_Grey
Дата сообщения: 22.06.2005 14:34
Вопрос к тем, кому довелось программным путем создавать PDF-ы.
Стоит задача из своей программы сохранять некоторые данные в PDF формате, с этим вроде особых проблем не возникло, благо и бесплатных и варезных компонент хватает.
Но задача не просто сохранять данные, а свести к минимуму возможность редактирование сего PDF-а. Понимая что запретить кому либо редактировать документ (в данном случае PDF) почти не возможно, была поставлена задача иметь возможность узнать что сохранненый документ был кем то изменен. Так вот вопрос, каким образом сие можно организовать? Кто что подскажет? Может кому уже доводилось такие задачи решать?
Спасибо.
Автор: deks
Дата сообщения: 22.06.2005 16:42
Nicka_Grey

насколько я понимаю, иных реально надежных вариантов кроме цифровой подписи не бывает.. Сам Adobe Acrobat позволяет подписывать файлы. А вот компоненты... Впрочем, можно попытаться защитить файл - берем любой из пакетов для формирования цифровой подписи, и подписываем файл. Если подпись нарушена - в файле кто-то коплася. подпись может ставится и не на сам файл, а "рядом".
Автор: Nicka_Grey
Дата сообщения: 22.06.2005 16:47
deks
Насчет цифровой подписи идеи проскакивали, но к сожалению я пока с этим не сталкивался
Можно поподробнее об этом, и какие есть компоненты?
Автор: Solnake
Дата сообщения: 22.06.2005 17:55
У меня получилась вот-такая херня:
Компоненты ADOTables , и ADODataSet находятна на DataModule, а DBGrid находится на форме. При активации той формы нужно чтобы в таблице обновлялись данные, я делаю вот так :

Код:
With DM do
begin
Nakls.Close;
Nakls.Open;
Move.Close;
Move.Open;
Assortment.Close;
Assortment.Open;
dsNakls.Enabled:=false;
dsNakls.Enabled:=true;
dsMove.Enabled:=False;
dsMove.Enabled:=True;
end;
Автор: YurikGL
Дата сообщения: 22.06.2005 19:53

Цитата:
Solnake

Не важно, где расположены датасет, датасорс и грид. Важно их связать.
Т.е. в датасорсе указать в качестве датасета - datamodule.dataset, у грида, в качестве датасорса - datamodule.datasource.

Свяжи все это и в design mode скажи датасету active:=true. В таблице праямо в дезигн моде должен отобразиться набор данных.

Добавлено:
что-бы прописать у грида, в качестве датасорса - datamodule.datasource нужно в модуле формы, где лежит грид в юзес добавить датамодуль... или просто в любом месте кода написать datamodule1, нажать ктрл+ф9 и у тебя по нажатию клавиши йес все автоматом добавится, если уже не было добавлено...
Автор: Solnake
Дата сообщения: 22.06.2005 20:19
YurikGL

Цитата:
Не важно, где расположены датасет, датасорс и грид. Важно их связать.
Т.е. в датасорсе указать в качестве датасета - datamodule.dataset, у грида, в качестве датасорса - datamodule.datasource.

Свяжи все это и в design mode скажи датасету active:=true. В таблице праямо в дезигн моде должен отобразиться набор данных.

Добавлено:
что-бы прописать у грида, в качестве датасорса - datamodule.datasource нужно в модуле формы, где лежит грид в юзес добавить датамодуль... или просто в любом месте кода написать datamodule1, нажать ктрл+ф9 и у тебя по нажатию клавиши йес все автоматом добавится, если уже не было добавлено...

Все это пробовалось , и проверялось. По идее должно работать, но не работает.
Вся проблема возникает из-за розделенности компонентов.
А тото способ что ты описал - я и так им пользуюсь, но вот в данном случае это работать не хочет и все, это факт. Если не вериш - поставь компоненты, как у меня описано, и попробуй сделать рефреш таблице кнопочкой на форме.

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768

Предыдущая тема: Вероятность одинакового CRC32


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.