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

» Вопросы по Delphi (все версии) - часть 4

Автор: ChiPnGo
Дата сообщения: 31.01.2009 15:53
Проверял с delphi 6, работает.
Автор: Grande
Дата сообщения: 31.01.2009 17:59
Решил задачу
Автор: Erazer
Дата сообщения: 31.01.2009 22:37
Никто не знает как писать юникодные строки в ini файл ?

ini := TNTIniFile.Create('c:\تمكين تعليقات.ini');
ini.WriteString('mysection', 'myvar', 'تمكين تعليقات');
создают файл но вместо указанной строки в файле вопросики. и это в d2009!

WritePrivateProfileStringW(PWideChar('mysection'), PWideChar('myvar'), PWideChar('تمكين تعليقات'), PWideChar('c:\myfile.ini'));
дает то же самое. фактически TNTIniFile это обертка вышеприведенной функции.

Добавлено:
гы... этот форум походу не понимает юникода тоже Ну там арабская вязь была. В блокноте и контролах прекрасно отображается, а вот здесь и в ини файле фигу
Автор: Maks150988
Дата сообщения: 31.01.2009 23:58
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
Дата сообщения: 01.02.2009 01:09
Maks150988 ключевое слово вроде прикол заключался в том что WritePrivateProfileStringW не создает Unicode file, она может толькол записывать в него. Потому чтобы писать в такой файл его сначала нужно создать юникодным, но в таком случае зачем писать в него и читать через зад ?!
_http://img230.imageshack.us/img230/9885/unicodeuc3.jpg
Код на рисунке прекрасно справляется с этим и без WritePrivateProfileStringW/GetPrivateProfileStringW.
Автор: Maks150988
Дата сообщения: 01.02.2009 01:56
Erazer
Да можно поди через CreateFileW или AssignFile без всяких VCL приблуд. =)
Автор: delover
Дата сообщения: 02.02.2009 07:04
Как узнать видно контрол или не видно? Свойство Visible говорит только показывать контрол или нет. Например я переключился на другой Tab в PageControl. Все компоненты неактивной страницы так и остались Visible. Но их уже не видно, однако ActiveControl формы указывает на компонент с неактивной страницы. И получается что срабатывают акции для невидимого контрола. Как быть? Я просто хочу знать видно ли контрол реально?
Автор: Frodo_Torbins
Дата сообщения: 02.02.2009 17:47
delover
Можно через винапи узнать.
Автор: Maks150988
Дата сообщения: 02.02.2009 18:31
delover
IsWindowVisible подходит? А то если такое дело, надо самому обрабатывать такие финтиклюшки при изменения страниц табов.
Автор: delover
Дата сообщения: 02.02.2009 21:08
Frodo_Torbins
Maks150988
А IsWindowVisible можно применять к оконному хендлу DBGridEh? Я тоже думаю, что у АПИ есть такие инструменты, но хотелось бы поподробнее. А то я метаюсь в памяти какие-то GetHitTest и GetWindowPlacement, не знаю откудава взяться.
Автор: ShIvADeSt
Дата сообщения: 03.02.2009 01:19
delover

Цитата:
А IsWindowVisible можно применять к оконному хендлу DBGridEh?

Мона и нуна
if IsWindowVisible(StringGrid1.Handle) then ShowMessage('OK');
на стринггриде все отлично работает.
Автор: delover
Дата сообщения: 03.02.2009 08:54
ShIvADeSt
Frodo_Torbins
Maks150988
Спасибо Всё работает просто отлично! Именно так как я хотел и интуитивно понятно. Для меня решилась очень большая проблемма. Я рад.
Автор: StalkerSoftware
Дата сообщения: 03.02.2009 16:34
delover

Цитата:
Как узнать видно контрол или не видно?

А чем метод CanFocus для наследников TWinControl не устраивает ?
Автор: delover
Дата сообщения: 03.02.2009 19:26
StalkerSoftware
Какой же я тупой!!! Так наверное тоже можно. Просто до этого я мало на это обращал внимания (на эту сторону вопроса). Пришлось обратить, так как давненько используют мои акции, ограничиваемые правами пользователя и то, что стандартно для Дельфи, а у других вызывает впечатление, что это я там что-то неправильно напрограммировал. Вот и хотелось чтобы акции, привязанные к контенту, обращали внимание на видимость контента при использовании шорткатов.
Спасибо всем.
Автор: delover
Дата сообщения: 04.02.2009 07:08
StalkerSoftware
Мне привели контраргумент - у TMS-ов есть самосворачиваемая панелька красивая, вот если фокус в ней, а её свёрнули, то фокус там и остался, и ввод в строку редактирования работает, хотя ничего не видать, и переключение табом работает, но как обьяснить разницу между компонентом с высотой ноль и неактивным табщетом я без понятия. Мои объяснения того, что если специально добиваться глупого поведения, то добъёшся, мои объяснения не помогли.
Автор: ufimez2
Дата сообщения: 04.02.2009 07:40
здравствуйте.
решил дельфи 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
Автор: Maks150988
Дата сообщения: 04.02.2009 10:29
У меня собственное такой вопросец. Хочу создать свой класс окна для отрисовки воего вида кнопок. С этим проблем нет впринципе. У меня только непонятки как вообще обрабатывать выполнение какого-либо действия в WM_LBUTTONUP независимо. А то есть много примеров с гиперссылкой, там SetProp и GetProp и вот это значение используют как www адресок. А тут же процедура например или функция должна выполниться. Как вообще надо делать?
Автор: delover
Дата сообщения: 04.02.2009 11:56
ufimez2
1)Процедуры описываемые в секции interface обязательно должны быть реализованы в implementation.
2)Описание любой формы должно находиться в секции interface. Если его там не будет, то Delphi "не узнает" форму, для Вас будет недоступен её дизайн в инспекторе объектов.
3)Методы майн формы реализуются в модуле майнформы, иначе смотри пункт 1 и 2, а потом определи какой модуль в троей программе главный.
4)Есть гемор типа {$i kuku.pas}, но это удовольствие мазо, или профессионал, что одно и то же по сути.

Maks150988
Предположу что SetProp и GetProp работают с паблишед полями. Они есть только у TPersistent. Можно создать свой типа персистент, но он точно - лучше не будет. Реши что за класс, юзает он овнеров и dfm?
Автор: Maks150988
Дата сообщения: 04.02.2009 16:25
delover
* очень сильно удивлен... Не понял если честно что вы хотите.
Мне просто BitBtn свой сделать без VCL надо с наворотами некоторыми. Это можно тупым способом засабклассить каждую требуемую кнопку для обработки наведения курсора на нее, но гораздо проще создать свой класс окна, куда методом SetProp нафигачить своих свойств в контрол (например название ресурса рисуемого значка на контроле), тем более уже не надо для каждой кнопки обрабатывать оконную процедуру, все будет делаться через одну оконную процедуру класса. Или я не уж сильно фигню хочу сделать?
Автор: delover
Дата сообщения: 04.02.2009 20:01
Maks150988
Я Вас не понял. SetProp имеет отношение к паблишед? Мне сложно представить.

Спустя три года заглянул в свой квелити централ. Оказывается были ответы и умные люди сегодня убедили меня, что я не был уродом. Они отвечали с юмором.
Автор: ShIvADeSt
Дата сообщения: 05.02.2009 02:09
delover

Цитата:
Я Вас не понял. SetProp имеет отношение к паблишед? Мне сложно представить.

SetProp (GetProp) - апишные функции, при наличии отстутсвия VCL - ими можно контролам (не компонентам) различные свойства давать, чтобы не заводить тучу переменных. Представлять не надо, достаточно один раз увидеть.


Цитата:
Мне просто BitBtn свой сделать без VCL надо с наворотами некоторыми. Это можно тупым способом засабклассить каждую требуемую кнопку для обработки наведения курсора на нее, но гораздо проще создать свой класс окна, куда методом SetProp нафигачить своих свойств в контрол (например название ресурса рисуемого значка на контроле), тем более уже не надо для каждой кнопки обрабатывать оконную процедуру, все будет делаться через одну оконную процедуру класса. Или я не уж сильно фигню хочу сделать?

Сам пробовал в свое время сделать класс аналог спидбаттона на апи, но забил, так как с классами не дружу. Щас может бы и получилось (инет и вперед), но привык сабклассить, да и смысла нет - в то время изучал АПИ и было интересно. Начни делать класс, попробуем помочь - просто мне интереснее чужой код править, чем самому набивать За аналог возьми (если найдешь) исходники от Warp (там ownerdraw menu создают на АПИ с использованием класса), посмотри может поможет. Если не найдешь - напиши в личку, выложу на обменник.
Автор: George_Lucky
Дата сообщения: 05.02.2009 06:10
Уважаемые, добрый день!
Есть следующий код по замене куска текста в MS Word:

word.Selection.Find.Text := str1;
word.Selection.Find.Replacement.Text := str2;

так вот, если str2 - большого размера, OLE сервер не может принять такой параметр.
Подскажите, как можно увеличить размер вставляемого текста, либо каким иным
способом это можно сделать?
Спасибо!
Автор: ufimez2
Дата сообщения: 05.02.2009 08:07
George_Lucky разбить str2 на блоки способные принять оле сервером


Добавлено:
можно например вначале обнулить выделенный текст потом, имеем позицию курсора на месте бывшего текста для замены и начинаем вставлять блоки текста

Добавлено:
delover спасибо, а можно чуть подробнее по {$i kuku.pas} или ссылку
Автор: delover
Дата сообщения: 05.02.2009 09:01
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. Как это делается?
Автор: Mandor Sawall
Дата сообщения: 05.02.2009 15:11
delover
Что значить "без указания Encoding"? Атрибут encoding - обезятельной для XML.
Автор: delover
Дата сообщения: 05.02.2009 15:24
Mandor Sawall
Для XML и понятий состоятельного документа этот атрибут обязателен. Для компонента TXmlDocument, для интернет эксплорера и для одной сторонней программы экспортирующей свои данные он не обязателен. Я просто реализую сохранение своих данных в таком же формате. Кстати TXmlDocument возвращает все данные нормально безо всяких усилий. я вижу при чтении не Р а русскую букву. Энкодинг при построении XML я тоже не указываю, всё работает, хотя это по БОЛШИМ понятиям не правильно. Но я хочу чтобы мои данные были доступны теми же средствами.

Задача в силе. Я не могу найти примеров xdom, хотя там много чего есть. Ещё задача как пропихнуть в XML документ свои амперсенды &, а не с заменой на &?
Автор: Maks150988
Дата сообщения: 05.02.2009 21:17
ShIvADeSt
Вот, на "скорую руку" сделал. class_bitbtn_src.zip Сейчас уже и проверять неохото на наведенность курсора и нажатость/отжатость кнопки. Может вы подрехтуете пример.
Пока из замеченных ошибок - это отрисовка кнопки при нажатии/отжатии и неотрисовка при перемещении окна за границы экрана/другое окно - все вперемежку рисуется на кнопке. Наверняка сдуру недоделал инвалидейт для контрола, хотя вроде все правильно, либо опять смещение координат происходит и все накладывается на HDC. Ну его нафиг...
Короче нужно чтобы по нажатии на кнопчоку эту выполянлось нужное действие, этих кнопок естественно может быть несколько и вообще нужен способ передачи управления процедуре/функции. надеюсь понятно объяснил.
Автор: ShIvADeSt
Дата сообщения: 06.02.2009 01:21
Maks150988

Цитата:
Вот, на "скорую руку" сделал. class_bitbtn_src.zip Сейчас уже и проверять неохото на наведенность курсора и нажатость/отжатость кнопки. Может вы подрехтуете пример.

В том то и дело, что ты не создавал класса. Поэтому вторая кнопка с таким глючным поведением. Попробую помочь, но не на этой неделе, скоро выходные - не до программирования.
Автор: Mandor Sawall
Дата сообщения: 06.02.2009 08:10
delover
Извините, не понял. Сможете преформулировать проблема? Например: "Средствами MS XML (или не имеет значение?) сделать фрагмент кода, которой...".

Добавлено:
А если укажете и тестовой пример, еще лучше - что подаете на вход, что хотите получить на выход.
Автор: Maks150988
Дата сообщения: 06.02.2009 10:19
ShIvADeSt
Стоп, я вроде про класс окна имел ввиду. Или тут уже подразумевается другое?

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Глобальные переменные в разных формах с++ builder 'a.


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