Проверял с delphi 6, работает.
» Вопросы по Delphi (все версии) - часть 4
Решил задачу
Никто не знает как писать юникодные строки в ini файл ?
ini := TNTIniFile.Create('c:\تمكين تعليقات.ini');
ini.WriteString('mysection', 'myvar', 'تمكين تعليقات');
создают файл но вместо указанной строки в файле вопросики. и это в d2009!
WritePrivateProfileStringW(PWideChar('mysection'), PWideChar('myvar'), PWideChar('تمكين تعليقات'), PWideChar('c:\myfile.ini'));
дает то же самое. фактически TNTIniFile это обертка вышеприведенной функции.
Добавлено:
гы... этот форум походу не понимает юникода тоже Ну там арабская вязь была. В блокноте и контролах прекрасно отображается, а вот здесь и в ини файле фигу
ini := TNTIniFile.Create('c:\تمكين تعليقات.ini');
ini.WriteString('mysection', 'myvar', 'تمكين تعليقات');
создают файл но вместо указанной строки в файле вопросики. и это в d2009!
WritePrivateProfileStringW(PWideChar('mysection'), PWideChar('myvar'), PWideChar('تمكين تعليقات'), PWideChar('c:\myfile.ini'));
дает то же самое. фактически TNTIniFile это обертка вышеприведенной функции.
Добавлено:
гы... этот форум походу не понимает юникода тоже Ну там арабская вязь была. В блокноте и контролах прекрасно отображается, а вот здесь и в ини файле фигу
delover
А фиг знат. Методом тыка поставил стандартный юнит для тем. Вроде работает теперь стабильно. Где-то я видать ошибся в сокращенном модуле.
Erazer
А хз как там надо. Я себе вот такие функции подправил из стандартных для анси. Вроде работает.
Код: function GetIniStringW(szFileName, szSection, szIdent, szDefault: WideString): WideString;
var
szBuffer: Array [0..MAX_PATH - 1] of WideChar;
begin
GetPrivateProfileStringW(PWideChar(szSection), PWideChar(szIdent), PWideChar(szDefault), szBuffer, SizeOf(szBuffer), PWideChar(szFileName));
Result := szBuffer;
end;
function SetIniStringW(szFileName, szSection, szIdent, szValue: WideString): Boolean;
begin
Result := WritePrivateProfileStringW(PWideChar(szSection), PWideChar(szIdent), PWideChar(szValue), PWideChar(szFileName));
end;
А фиг знат. Методом тыка поставил стандартный юнит для тем. Вроде работает теперь стабильно. Где-то я видать ошибся в сокращенном модуле.
Erazer
А хз как там надо. Я себе вот такие функции подправил из стандартных для анси. Вроде работает.
Код: function GetIniStringW(szFileName, szSection, szIdent, szDefault: WideString): WideString;
var
szBuffer: Array [0..MAX_PATH - 1] of WideChar;
begin
GetPrivateProfileStringW(PWideChar(szSection), PWideChar(szIdent), PWideChar(szDefault), szBuffer, SizeOf(szBuffer), PWideChar(szFileName));
Result := szBuffer;
end;
function SetIniStringW(szFileName, szSection, szIdent, szValue: WideString): Boolean;
begin
Result := WritePrivateProfileStringW(PWideChar(szSection), PWideChar(szIdent), PWideChar(szValue), PWideChar(szFileName));
end;
Maks150988 ключевое слово вроде прикол заключался в том что WritePrivateProfileStringW не создает Unicode file, она может толькол записывать в него. Потому чтобы писать в такой файл его сначала нужно создать юникодным, но в таком случае зачем писать в него и читать через зад ?!
_http://img230.imageshack.us/img230/9885/unicodeuc3.jpg
Код на рисунке прекрасно справляется с этим и без WritePrivateProfileStringW/GetPrivateProfileStringW.
_http://img230.imageshack.us/img230/9885/unicodeuc3.jpg
Код на рисунке прекрасно справляется с этим и без WritePrivateProfileStringW/GetPrivateProfileStringW.
Erazer
Да можно поди через CreateFileW или AssignFile без всяких VCL приблуд. =)
Да можно поди через CreateFileW или AssignFile без всяких VCL приблуд. =)
Как узнать видно контрол или не видно? Свойство Visible говорит только показывать контрол или нет. Например я переключился на другой Tab в PageControl. Все компоненты неактивной страницы так и остались Visible. Но их уже не видно, однако ActiveControl формы указывает на компонент с неактивной страницы. И получается что срабатывают акции для невидимого контрола. Как быть? Я просто хочу знать видно ли контрол реально?
delover
Можно через винапи узнать.
Можно через винапи узнать.
delover
IsWindowVisible подходит? А то если такое дело, надо самому обрабатывать такие финтиклюшки при изменения страниц табов.
IsWindowVisible подходит? А то если такое дело, надо самому обрабатывать такие финтиклюшки при изменения страниц табов.
Frodo_Torbins
Maks150988
А IsWindowVisible можно применять к оконному хендлу DBGridEh? Я тоже думаю, что у АПИ есть такие инструменты, но хотелось бы поподробнее. А то я метаюсь в памяти какие-то GetHitTest и GetWindowPlacement, не знаю откудава взяться.
Maks150988
А IsWindowVisible можно применять к оконному хендлу DBGridEh? Я тоже думаю, что у АПИ есть такие инструменты, но хотелось бы поподробнее. А то я метаюсь в памяти какие-то GetHitTest и GetWindowPlacement, не знаю откудава взяться.
delover
Цитата:
Мона и нуна
if IsWindowVisible(StringGrid1.Handle) then ShowMessage('OK');
на стринггриде все отлично работает.
Цитата:
А IsWindowVisible можно применять к оконному хендлу DBGridEh?
Мона и нуна
if IsWindowVisible(StringGrid1.Handle) then ShowMessage('OK');
на стринггриде все отлично работает.
ShIvADeSt
Frodo_Torbins
Maks150988
Спасибо Всё работает просто отлично! Именно так как я хотел и интуитивно понятно. Для меня решилась очень большая проблемма. Я рад.
Frodo_Torbins
Maks150988
Спасибо Всё работает просто отлично! Именно так как я хотел и интуитивно понятно. Для меня решилась очень большая проблемма. Я рад.
delover
Цитата:
А чем метод CanFocus для наследников TWinControl не устраивает ?
Цитата:
Как узнать видно контрол или не видно?
А чем метод CanFocus для наследников TWinControl не устраивает ?
StalkerSoftware
Какой же я тупой!!! Так наверное тоже можно. Просто до этого я мало на это обращал внимания (на эту сторону вопроса). Пришлось обратить, так как давненько используют мои акции, ограничиваемые правами пользователя и то, что стандартно для Дельфи, а у других вызывает впечатление, что это я там что-то неправильно напрограммировал. Вот и хотелось чтобы акции, привязанные к контенту, обращали внимание на видимость контента при использовании шорткатов.
Спасибо всем.
Какой же я тупой!!! Так наверное тоже можно. Просто до этого я мало на это обращал внимания (на эту сторону вопроса). Пришлось обратить, так как давненько используют мои акции, ограничиваемые правами пользователя и то, что стандартно для Дельфи, а у других вызывает впечатление, что это я там что-то неправильно напрограммировал. Вот и хотелось чтобы акции, привязанные к контенту, обращали внимание на видимость контента при использовании шорткатов.
Спасибо всем.
StalkerSoftware
Мне привели контраргумент - у TMS-ов есть самосворачиваемая панелька красивая, вот если фокус в ней, а её свёрнули, то фокус там и остался, и ввод в строку редактирования работает, хотя ничего не видать, и переключение табом работает, но как обьяснить разницу между компонентом с высотой ноль и неактивным табщетом я без понятия. Мои объяснения того, что если специально добиваться глупого поведения, то добъёшся, мои объяснения не помогли.
Мне привели контраргумент - у TMS-ов есть самосворачиваемая панелька красивая, вот если фокус в ней, а её свёрнули, то фокус там и остался, и ввод в строку редактирования работает, хотя ничего не видать, и переключение табом работает, но как обьяснить разницу между компонентом с высотой ноль и неактивным табщетом я без понятия. Мои объяснения того, что если специально добиваться глупого поведения, то добъёшся, мои объяснения не помогли.
здравствуйте.
решил дельфи 7 поизучать. все нормально получается пока и тут решил упростить программу - вынести часть процедур в отдельный модуль.
не привязанные к форме процедуры и функции легко выносятся
Function MyCreateDir(Dir:string): Boolean;
begin
result:= true;
.......
end;
а как вынести в отдельный модуль следующую функцию?
procedure TMainForm.Button2Click(Sender: TObject);
begin
exit;
end;
создается все в главном модуле типа этого
//**blank form unit
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes,
Graphics, Controls, Forms, Dialogs;
type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
end. //this ends the unit
а мне надо перенести его в другой типа этого.
//**blank code unit
unit Unit2;
interface
{interface code goes here}
implementation
{implementation code goes here}
end. //this ends the unit
решил дельфи 7 поизучать. все нормально получается пока и тут решил упростить программу - вынести часть процедур в отдельный модуль.
не привязанные к форме процедуры и функции легко выносятся
Function MyCreateDir(Dir:string): Boolean;
begin
result:= true;
.......
end;
а как вынести в отдельный модуль следующую функцию?
procedure TMainForm.Button2Click(Sender: TObject);
begin
exit;
end;
создается все в главном модуле типа этого
//**blank form unit
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes,
Graphics, Controls, Forms, Dialogs;
type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
end. //this ends the unit
а мне надо перенести его в другой типа этого.
//**blank code unit
unit Unit2;
interface
{interface code goes here}
implementation
{implementation code goes here}
end. //this ends the unit
У меня собственное такой вопросец. Хочу создать свой класс окна для отрисовки воего вида кнопок. С этим проблем нет впринципе. У меня только непонятки как вообще обрабатывать выполнение какого-либо действия в WM_LBUTTONUP независимо. А то есть много примеров с гиперссылкой, там SetProp и GetProp и вот это значение используют как www адресок. А тут же процедура например или функция должна выполниться. Как вообще надо делать?
ufimez2
1)Процедуры описываемые в секции interface обязательно должны быть реализованы в implementation.
2)Описание любой формы должно находиться в секции interface. Если его там не будет, то Delphi "не узнает" форму, для Вас будет недоступен её дизайн в инспекторе объектов.
3)Методы майн формы реализуются в модуле майнформы, иначе смотри пункт 1 и 2, а потом определи какой модуль в троей программе главный.
4)Есть гемор типа {$i kuku.pas}, но это удовольствие мазо, или профессионал, что одно и то же по сути.
Maks150988
Предположу что SetProp и GetProp работают с паблишед полями. Они есть только у TPersistent. Можно создать свой типа персистент, но он точно - лучше не будет. Реши что за класс, юзает он овнеров и dfm?
1)Процедуры описываемые в секции interface обязательно должны быть реализованы в implementation.
2)Описание любой формы должно находиться в секции interface. Если его там не будет, то Delphi "не узнает" форму, для Вас будет недоступен её дизайн в инспекторе объектов.
3)Методы майн формы реализуются в модуле майнформы, иначе смотри пункт 1 и 2, а потом определи какой модуль в троей программе главный.
4)Есть гемор типа {$i kuku.pas}, но это удовольствие мазо, или профессионал, что одно и то же по сути.
Maks150988
Предположу что SetProp и GetProp работают с паблишед полями. Они есть только у TPersistent. Можно создать свой типа персистент, но он точно - лучше не будет. Реши что за класс, юзает он овнеров и dfm?
delover
* очень сильно удивлен... Не понял если честно что вы хотите.
Мне просто BitBtn свой сделать без VCL надо с наворотами некоторыми. Это можно тупым способом засабклассить каждую требуемую кнопку для обработки наведения курсора на нее, но гораздо проще создать свой класс окна, куда методом SetProp нафигачить своих свойств в контрол (например название ресурса рисуемого значка на контроле), тем более уже не надо для каждой кнопки обрабатывать оконную процедуру, все будет делаться через одну оконную процедуру класса. Или я не уж сильно фигню хочу сделать?
* очень сильно удивлен... Не понял если честно что вы хотите.
Мне просто BitBtn свой сделать без VCL надо с наворотами некоторыми. Это можно тупым способом засабклассить каждую требуемую кнопку для обработки наведения курсора на нее, но гораздо проще создать свой класс окна, куда методом SetProp нафигачить своих свойств в контрол (например название ресурса рисуемого значка на контроле), тем более уже не надо для каждой кнопки обрабатывать оконную процедуру, все будет делаться через одну оконную процедуру класса. Или я не уж сильно фигню хочу сделать?
Maks150988
Я Вас не понял. SetProp имеет отношение к паблишед? Мне сложно представить.
Спустя три года заглянул в свой квелити централ. Оказывается были ответы и умные люди сегодня убедили меня, что я не был уродом. Они отвечали с юмором.
Я Вас не понял. SetProp имеет отношение к паблишед? Мне сложно представить.
Спустя три года заглянул в свой квелити централ. Оказывается были ответы и умные люди сегодня убедили меня, что я не был уродом. Они отвечали с юмором.
delover
Цитата:
SetProp (GetProp) - апишные функции, при наличии отстутсвия VCL - ими можно контролам (не компонентам) различные свойства давать, чтобы не заводить тучу переменных. Представлять не надо, достаточно один раз увидеть.
Цитата:
Сам пробовал в свое время сделать класс аналог спидбаттона на апи, но забил, так как с классами не дружу. Щас может бы и получилось (инет и вперед), но привык сабклассить, да и смысла нет - в то время изучал АПИ и было интересно. Начни делать класс, попробуем помочь - просто мне интереснее чужой код править, чем самому набивать За аналог возьми (если найдешь) исходники от Warp (там ownerdraw menu создают на АПИ с использованием класса), посмотри может поможет. Если не найдешь - напиши в личку, выложу на обменник.
Цитата:
Я Вас не понял. SetProp имеет отношение к паблишед? Мне сложно представить.
SetProp (GetProp) - апишные функции, при наличии отстутсвия VCL - ими можно контролам (не компонентам) различные свойства давать, чтобы не заводить тучу переменных. Представлять не надо, достаточно один раз увидеть.
Цитата:
Мне просто BitBtn свой сделать без VCL надо с наворотами некоторыми. Это можно тупым способом засабклассить каждую требуемую кнопку для обработки наведения курсора на нее, но гораздо проще создать свой класс окна, куда методом SetProp нафигачить своих свойств в контрол (например название ресурса рисуемого значка на контроле), тем более уже не надо для каждой кнопки обрабатывать оконную процедуру, все будет делаться через одну оконную процедуру класса. Или я не уж сильно фигню хочу сделать?
Сам пробовал в свое время сделать класс аналог спидбаттона на апи, но забил, так как с классами не дружу. Щас может бы и получилось (инет и вперед), но привык сабклассить, да и смысла нет - в то время изучал АПИ и было интересно. Начни делать класс, попробуем помочь - просто мне интереснее чужой код править, чем самому набивать За аналог возьми (если найдешь) исходники от Warp (там ownerdraw menu создают на АПИ с использованием класса), посмотри может поможет. Если не найдешь - напиши в личку, выложу на обменник.
Уважаемые, добрый день!
Есть следующий код по замене куска текста в MS Word:
word.Selection.Find.Text := str1;
word.Selection.Find.Replacement.Text := str2;
так вот, если str2 - большого размера, OLE сервер не может принять такой параметр.
Подскажите, как можно увеличить размер вставляемого текста, либо каким иным
способом это можно сделать?
Спасибо!
Есть следующий код по замене куска текста в MS Word:
word.Selection.Find.Text := str1;
word.Selection.Find.Replacement.Text := str2;
так вот, если str2 - большого размера, OLE сервер не может принять такой параметр.
Подскажите, как можно увеличить размер вставляемого текста, либо каким иным
способом это можно сделать?
Спасибо!
George_Lucky разбить str2 на блоки способные принять оле сервером
Добавлено:
можно например вначале обнулить выделенный текст потом, имеем позицию курсора на месте бывшего текста для замены и начинаем вставлять блоки текста
Добавлено:
delover спасибо, а можно чуть подробнее по {$i kuku.pas} или ссылку
Добавлено:
можно например вначале обнулить выделенный текст потом, имеем позицию курсора на месте бывшего текста для замены и начинаем вставлять блоки текста
Добавлено:
delover спасибо, а можно чуть подробнее по {$i kuku.pas} или ссылку
ufimez2
1. Напиши в коде "{$I GETMEM.INC }". И поставь курсор между $ и I. Нажми F1.
(Include files reference).
2. Открой System.pas (напиши System, на нём Ctrl+Enter) найди в нём строку {$I GETMEM.INC } и так же Ctrl+Enter.
all
Как найти примеры использования xdom? Там много функций ковертации в правильный xml с символами типа "П". Я хочу сохранить XMLDocument в этом формате без указания Encoding. Как это делается?
1. Напиши в коде "{$I GETMEM.INC }". И поставь курсор между $ и I. Нажми F1.
(Include files reference).
2. Открой System.pas (напиши System, на нём Ctrl+Enter) найди в нём строку {$I GETMEM.INC } и так же Ctrl+Enter.
all
Как найти примеры использования xdom? Там много функций ковертации в правильный xml с символами типа "П". Я хочу сохранить XMLDocument в этом формате без указания Encoding. Как это делается?
delover
Что значить "без указания Encoding"? Атрибут encoding - обезятельной для XML.
Что значить "без указания Encoding"? Атрибут encoding - обезятельной для XML.
Mandor Sawall
Для XML и понятий состоятельного документа этот атрибут обязателен. Для компонента TXmlDocument, для интернет эксплорера и для одной сторонней программы экспортирующей свои данные он не обязателен. Я просто реализую сохранение своих данных в таком же формате. Кстати TXmlDocument возвращает все данные нормально безо всяких усилий. я вижу при чтении не Р а русскую букву. Энкодинг при построении XML я тоже не указываю, всё работает, хотя это по БОЛШИМ понятиям не правильно. Но я хочу чтобы мои данные были доступны теми же средствами.
Задача в силе. Я не могу найти примеров xdom, хотя там много чего есть. Ещё задача как пропихнуть в XML документ свои амперсенды &, а не с заменой на &?
Для XML и понятий состоятельного документа этот атрибут обязателен. Для компонента TXmlDocument, для интернет эксплорера и для одной сторонней программы экспортирующей свои данные он не обязателен. Я просто реализую сохранение своих данных в таком же формате. Кстати TXmlDocument возвращает все данные нормально безо всяких усилий. я вижу при чтении не Р а русскую букву. Энкодинг при построении XML я тоже не указываю, всё работает, хотя это по БОЛШИМ понятиям не правильно. Но я хочу чтобы мои данные были доступны теми же средствами.
Задача в силе. Я не могу найти примеров xdom, хотя там много чего есть. Ещё задача как пропихнуть в XML документ свои амперсенды &, а не с заменой на &?
ShIvADeSt
Вот, на "скорую руку" сделал. class_bitbtn_src.zip Сейчас уже и проверять неохото на наведенность курсора и нажатость/отжатость кнопки. Может вы подрехтуете пример.
Пока из замеченных ошибок - это отрисовка кнопки при нажатии/отжатии и неотрисовка при перемещении окна за границы экрана/другое окно - все вперемежку рисуется на кнопке. Наверняка сдуру недоделал инвалидейт для контрола, хотя вроде все правильно, либо опять смещение координат происходит и все накладывается на HDC. Ну его нафиг...
Короче нужно чтобы по нажатии на кнопчоку эту выполянлось нужное действие, этих кнопок естественно может быть несколько и вообще нужен способ передачи управления процедуре/функции. надеюсь понятно объяснил.
Вот, на "скорую руку" сделал. class_bitbtn_src.zip Сейчас уже и проверять неохото на наведенность курсора и нажатость/отжатость кнопки. Может вы подрехтуете пример.
Пока из замеченных ошибок - это отрисовка кнопки при нажатии/отжатии и неотрисовка при перемещении окна за границы экрана/другое окно - все вперемежку рисуется на кнопке. Наверняка сдуру недоделал инвалидейт для контрола, хотя вроде все правильно, либо опять смещение координат происходит и все накладывается на HDC. Ну его нафиг...
Короче нужно чтобы по нажатии на кнопчоку эту выполянлось нужное действие, этих кнопок естественно может быть несколько и вообще нужен способ передачи управления процедуре/функции. надеюсь понятно объяснил.
Maks150988
Цитата:
В том то и дело, что ты не создавал класса. Поэтому вторая кнопка с таким глючным поведением. Попробую помочь, но не на этой неделе, скоро выходные - не до программирования.
Цитата:
Вот, на "скорую руку" сделал. class_bitbtn_src.zip Сейчас уже и проверять неохото на наведенность курсора и нажатость/отжатость кнопки. Может вы подрехтуете пример.
В том то и дело, что ты не создавал класса. Поэтому вторая кнопка с таким глючным поведением. Попробую помочь, но не на этой неделе, скоро выходные - не до программирования.
delover
Извините, не понял. Сможете преформулировать проблема? Например: "Средствами MS XML (или не имеет значение?) сделать фрагмент кода, которой...".
Добавлено:
А если укажете и тестовой пример, еще лучше - что подаете на вход, что хотите получить на выход.
Извините, не понял. Сможете преформулировать проблема? Например: "Средствами MS XML (или не имеет значение?) сделать фрагмент кода, которой...".
Добавлено:
А если укажете и тестовой пример, еще лучше - что подаете на вход, что хотите получить на выход.
ShIvADeSt
Стоп, я вроде про класс окна имел ввиду. Или тут уже подразумевается другое?
Стоп, я вроде про класс окна имел ввиду. Или тут уже подразумевается другое?
Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
Предыдущая тема: Глобальные переменные в разных формах с++ builder 'a.
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.