var
    rId:string;

procedure frmMain_TableGrid1_OnCellClick (Sender: TObject; ACol, ARow: Integer);
begin
//...
vit007 wrote:

Или скрипт принудительного указания расположения курсора в текстовых полях... Т.е. когда нажимаешь кнопку открытия формы срабатывал скрипт на указание положения... Спасибо.

procedure frmNew_OnShow (Sender: TObject; Action: string);
// ...
begin
    frmNew.Edit5.SetFocus; // фокус на нужном поле.
// ...
    
procedure frmNote_OnShow (Sender: TObject; Action: string);
begin
  frmNote.Edit7.SetFocus; // фокус на нужном поле (он же выделяет текст).
  frmNote.Edit7.SelStart:=length(frmNote.Edit7.text); // курсор в конец текста.
  // frmNote.Edit7.SelStart:=0; // курсор в начало текста.
end;
vit007 wrote:

В моем проекте курсор не везде появляется при создание новой записи и редактирование и каждый раз приходится тыкать мышкой на поле.

Появляется, только не в той очереди. Наcтраивайте TabOrder в компонентах.

vit007 wrote:

в режиме редактирование хотелось бы чтоб курсор был позади введенного текста в поле...

"в конце" имелось ввиду наверное..?

4

(10 replies, posted in Russian)

abc52 wrote:

..Как изменить ширину формы ShowMessage() ?

Проще будет свою отдельную форму создать и использовать ее для вывода сообщений.

5

(3 replies, posted in Russian)

Где-то тут валяется решение...

DriveSoft wrote:

Для компонентов
Form, Button, Edit, EditCount, Memo, TableGrid, TreeView, ComboBox, FileToDatabase, GroupBox, PageControl, TabSheet, Panel

добавил событие OnDropFiles

AllowDropFiles всегда true?

Примерно так:

var s:string;
//...
if ExtracFileExt(FileName) in ['.doc','.docx','.rtf'] then
s:='winword' else s:='';
OpenFile(FileName,s);

Shellapi не нужен. В TForm есть свойство DragAccept и метод OnDropFiles, достаточно их декларировать для скрипта.

OpenFile('"Диск:\Путь\Файл.docx"')
OpenFile('Диск:\Путь\Файл.docx','winword')
OpenFile('"Диск:\Путь\Файл.docx"','winword')
procedure OpenFile2(FileName:string);
var  WshShell:variant;
begin
 WshShell := CreateOleObject('Wscript.Shell');
 WshShell.Run(FileName);
 WshShell := null;
end;

//...
OpenFile2('Диск:\Путь\Файл.docx')
OpenFile2('"Диск:\Путь\Файл.docx"')
OpenFile2('winword Диск:\Путь\Файл.docx')
OpenFile2('winword "Диск:\Путь\Файл.docx"')

Есть наброски кода с использованием ADODB   портированный в mvdb из другой программы, но работает очень криво. Возможно из-за того, что в программе нет команд для корректного уничтожения созданных ole-объектов.

Сейчас же я не могу добиться того, чтобы MVD(Delphi) проверяло бы реальную работоспособность OLE механизма на конкретном ПК и если есть какие-то проблемы с этим, то хотя бы сообщало об этом, а не зависала бы на длительный срок с последующим выпаданием в исключение.

И такая конструкция не помогает..?

try
  CreateOleObject('Chto.To.Tam');
except
end;
mikhail_a wrote:

независимо от того, установлен Excel на ПК или нет, детектирование наличия Excel средствами MVD или Delphi  всегда дает положительный результат...
..(CLSIDFromProgID('Excel.Application', CLSID) = S_OK)..

Ну это явные признаки того, что MSOffice на компьютере ранее стоял, но был некорректно удален (возможно просто удалением файлов) и последующая установка добавила кривизны.
Гуглите на предмет "полное удаление и очистка Office" перегружайте комп и ставьте с нуля.

Немного неверное утверждение "работа без OLE" равно как и ошибочное название статьи по ссылке. В приведенном примере работа с файлом выполняется через OLE, но минуя Application.Excel. А OLE остаётся но используются другие объекты. Для соединения используется ADODB.Connection (через провайдер Microsoft.Jet.OLEDB.4.0).
Внедрять что-то в исходники программы вряд ли требуется, т.к. код можно адаптировать под встроенный движок. Насчёт создания файла - не пробовал, но делал читалку xslx вышеописанным способом. Проверено на компе без установленного MS Office - работает...

mikhail_a wrote:

А событий OnCreate и OnPoint вроде в MVD нет

OnPaint вообще-то...

Они просто местами "недокументированы". Вообще если нужно что-то "выдавить" из Mvdb, надо сходить в delphi или lazarus и там посмотреть свойства и методы нужного класса.

mikhail_a wrote:

соединение отрубается.
Почему - непонятно.

Очевидно коннект "плавает" в OnShow формы и существующий обработчик затирается новым. Попробуйте заменить на OnCreate или OnPaint...

arik16 wrote:

не отстаете от меня

Боже упаси, Юлия Валерьевна, и в мыслях такого не было...

Есть у кого-нибудь идеи где копать?

Что-то повреждено в конфигурации установки MS Office. Возникает обычно если поверх офиса ставится какая-нибудь обнова или компонент (может прийти с какой-то другой программой). Самое простое - снести и заново установить офис для перерегистрации библиотек и com-компонентов.

Почему? Вроде ж есть такой db-компонент визуальный. В делфи точно не знаю, но в лазарусе есть (а это клон делфи).

А если записей в таблице окажется больше, чем количество RadioButton-ов?

Видимо неправильно меня поняли... Я имел ввиду, что группа батонов это одно поле. значение = caption.

Наверное речь о RadioButton-ах. Правда пожелание "один из двух" немного заужено. В идеале желательно иметь возможность "группировки" множества RadioButton-ов.
Возможно было бы целесообразным сделать родительский компонент "RadioButtonGroup", в него пользователь включает нужное количество RB и в базу вносится всего одно состояние.

Автор - комета...

Очень приятно, Юлия. Я Владимир. big_smile
Счас посмотрим...

Это хорошо. Но (имхо) между виртуальным хостингом и vps (за одни и те же деньги) - я б выбрал VPS, ибо гибче, чуть прозрачнее (в плане параметров) и отдельный свой ip.

Вау!
Ну теперь, если несложно - скиньте свежий (лицензионный) проект wink

25

(2 replies, posted in Russian)

1. Генерировать html и открыть в браузере.
2. Заполнить doc, xls с помощью OLE.
3. Использовать какую-то библиотеку (например для создания PDF) и скормить ей данные.