При закрытии подписчики были переданы в рассылку "Delphi - проблемы и решения" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
Информационный Канал Subscribe.Ru |
Раздел "Вопрос-ответ"
Результаты
Вопрос №10: Многострочный CheckBox
Подскажите, как можно отобразить в стандартном CheckBox-е более одной строки
текста? Где-то такое встречал в продуктах MS.
Предложить свой вариант решения можно здесь
или воспользовавшись формой обратной связи (для HTML-формата).
Ответ №1 (Антон): Сильно сомневаюсь что при написании своего софта в Мелкософте используют Delphi.
Для переноса на другую строку вообще то делают так: 'Line 1'#13#10'Line 2' (из хелпа),
но в checkbox так не работает, работает, например в tlabel, но они имеют разных предков.
tLabel рисует текст сам DrawText(Canvas.Handle, PChar(Text), Length(Text), Rect,Flags),
а tCheckBox, tButton так if Msg = WM_SETTEXT then SendDockNotification(Msg, WParam, LParam), то есть через api.
Так что проще написать свой компонент, или найти готовый..
Вопрос №12: Глобальные переменные
У меня такой вопрос как и где описать переменную чтобы сней можно было работать
во всех формах. С Уважением Александр.
Предполагаемое решение: Я делал следующим образом: создаем новый модуль UConsts.pas,
например, опысываем там все ГЛОБАЛЬНЫЕ переменные и посе этого используем его
во всех формах.
Предложить свой вариант решения можно здесь
или воспользовавшись формой обратной связи (для HTML-формата).
Ответ №1 (Прохоров Владимир Викторович): Я обычно делаю модуль Type.pas, куда помещаю глобальные переменные, константы, типы и процедуры..
Ответ №2 (agility@vologda.ru): Обычно я делаю следующим образом: описываю переменные в разделе PUBLIC главной формы. В этом случае переменные являются полями этой формы и к ним нужно обращаться следующим образом: например, Form1.i:=5;
P.S. от ведущего: А если нужно делать вызов из дочернего окна? И если добавляя модуль Unit***.pas возникает рекурсия? Первый вариант лучше.Ответ №3 (vi): Можно создать новую форму "Глобальную", в которой заводить глобальные переменные, затем во всех остальных формах ссылаться на "Глобальную", должно получаться.
Вопрос №15: Массив объектов
Скажите пожалуйста, как создать массив объектов во время выполнения программы?
Например, мне нужно создать n кнопок на форме, где n указывает пользователь. Эти
кнопки по одной создавать получается, но вот в массиве - уже нет...
Предложить свой вариант решения можно
здесь
или воспользовавшись формой обратной связи (для HTML-формата).
Ответ №1 (Boris Semenko): Создавать кнопки по одной, а потом класть их в TObjectList.
Ответ №2 (Антон): Ну например так:
var Form1: TForm1; a:array of tbutton; x:integer; procedure TForm1.FormCreate(Sender: TObject); begin setlength(a,10); for x:=0 to 9 do begin a[x]:=tbutton.create(form1); a[x].Parent:=form1; a[x].Left:=10; a[x].Top:=x*30; a[x].Caption:='aaaa'; a[x].OnClick:=button1click; end; end; procedure TForm1.Button1Click(Sender: TObject); begin for x:=0 to 9 do if (sender as tbutton)=a[x] then label1.Caption:=inttostr(x); end;Ответ №3 (Alexandr Belayev): Лучше создавать не массив, а список используя при этом класс TList. Функция создаёт необходимо кол-во кнопок, список fButtons:TList определён в секции private формы:
procedure Form1.CreateButtons(const ABtnsCount:integer); var i:integer; lBtn:TButton; begin for i:=0 to ABtnsCount-1 do begin lBtn:=TButton.Create(Self); fButtons.add(lBtn); lBtn.Parent:=self; // Тут должны идти настройки необходимых свойств созданной // кнопки. end; end;p.s. Если будут вопросы - пиши.
Ответ №4 (Хлынов Олег Викторович): Создай динамический массив с указателями на объекты.
Ответ №5 (Serega): Работает безотказно:
procedure TForm1.Button1Click(Sender: TObject); var x, i : Integer; Button : TButton; begin x := strtoint(Edit1.Text); for i:=1 to x do begin Button := TButton.Create(nil); with Button do begin Parent := Application.MainForm; Caption := 'Кнопка' + inttostr(i); Top := i*30; Left := 10; end; end; end;Ответ №6 (Serega): Данный код создает по нажатии на Button1 новую Label. Используется динамический массив. Код легко адаптировать и, например, для TButton.
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Button1: TButton; Timer1: TTimer; Label1: TLabel; procedure Button1Click(Sender: TObject); procedure FormDblClick(Sender: TObject); procedure Timer1Timer(Sender: TObject); private { Private declarations } public DynamicLabels:array of TLabel; { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin SetLength(DynamicLabels,High(DynamicLabels)+2); DynamicLabels[High(DynamicLabels)]:=TLabel.Create(self); DynamicLabels[High(DynamicLabels)].Parent:=self; with DynamicLabels[High(DynamicLabels)] do begin Caption:=IntToStr(High(DynamicLabels)+1); Show; if High(DynamicLabels)= 0 then begin Left:=10; Top:=10; end else begin Left:=DynamicLabels[High(DynamicLabels)-1].Left; Top:=DynamicLabels[High(DynamicLabels)-1].Top+DynamicLabels[High(DynamicLabels)-1].Height+2; end; if Top+height>Form1.ClientHeight then begin left:=left+DynamicLabels[High(DynamicLabels)-1].width+2; top:=10; end; UpDate; end; end; procedure TForm1.FormDblClick(Sender: TObject); begin timer1.Enabled:=not timer1.enabled; end; procedure TForm1.Timer1Timer(Sender: TObject); begin Button1Click(self); end; end.
Новые вопросы
Вопрос №16: Работа с LPT как портом ввода/вывода
Как организовать ввод и вывод данных через LPT?
Предложить свой вариант решения можно здесь
или воспользовавшись формой обратной связи (для HTML-формата).
Вопрос №17: Blob-поля в базе
MDB (Access)
Как правильно делать insert для blob полей в mdb базу?
Провайдер у меня Microsoft.Jet.OLEDB.4.0. Пробовал так
var energ:array [0..127]of byte;
begin
ADOTable1.Insert;
ADOTable1.FieldByName('user_id').asinteger:=12;
ADOTable1.FieldByName('number').asinteger:=1;
ADOTable1.FieldByName('spectr').SetData(@energ,true);
ADOTable1.Post;
end;
Если energ динамический массив, то ADOTable1.FieldByName('spectr').SetData(energ,true);
Ошибки он не выдает, но при чтении выдается абракадабра.
Читаю так же: ADOTable1.FieldByName('spectr').GetData(energ,true);
Подскажите кто знает.
И еще, как выполнять не select запросы к ADO чтобы не выскакивала ошибка, что
он ничего не возвращает, типа EOleException и EDatabaseError - ... not return
result set.
Предложить свой вариант решения можно
здесь
или воспользовавшись формой обратной связи (для HTML-формата).
Вопрос №18: Вопрос о компонентах
Как можно добавить свойство к уже существующему компаненту?
Предполагаемое решение: на основе оригинального компонента написать
клон.
Предложить свой вариант решения
можно здесь
или воспользовавшись формой обратной связи (для HTML-формата).
Вопрос №19: Перетаскивание окна
без рамки
Как перетаскивать окна без рамки (т. е. с Borderstyle="bsNone)."
Предполагаемое решение: При нажатии кнопки мыши - если она находится на форме
отправлять Windows сообщение, что под мышкой - заголовок окна.
Предложить свой вариант решения можно здесь
или воспользовавшись формой обратной связи (для HTML-формата).
Вопрос №20: Обращение к динамически
создаваемым кнопкам
Подскажите, можно ли создать массив кнопок т.е. на форме они размещаются в
виде таблицы, и обращение к ним идет как к элнментам массива.?
Предполагаемое решение: Думаю,
нет смысла повторяться: см. ответы на Вопрос №15 выше.
Предложить свой вариант решения можно здесь
или воспользовавшись формой обратной связи (для HTML-формата).
Вопрос №21: Включение
в Delphi-project другого exe-файла
Как можно включить в разрабатываемый проект готовый exe-файл?
Предполагаемое решение: Вставить его в ресурс и откомпилить компилятором ресурсов.
Далее читать из ресурса своего EXE-файла.
Предложить свой вариант решения можно
здесь
или воспользовавшись формой обратной связи (для HTML-формата).
Вопрос №22: ReadOnly аттрибут
файлов?
Я сделал тест(опросник) для проверки студентов , но есть проблема не подключаются
фаилы с вопросами если установить атрибут ReadOnly (чтоб не потерли). В институте
WinNT4 если это важно.
Предполагаемое решение: Если проблема именно в аттрибутах файлов, в чем я
очень сомневаюсь, то потробуй поработать с переменной FileMode.
Предложить свой вариант решения можно
здесь
или воспользовавшись формой обратной связи (для HTML-формата).
Вопрос №23: Как отобразить html
документ на форме
Имеется html документ, например в текстовом файле. Как отобразить его на форме?
Предполагаемое решение: А компонент TWebBrowser не подходит?
Предложить свой вариант решения можно
здесь
или воспользовавшись формой обратной связи (для HTML-формата).
Вопрос №24: Отображение адреса
значения в элементе типа TEdit
Как перевести адрес переменной в строчное представление? Видел, что в некоторых
программах (omatic, например) указывается какое-либо значение, находящееся в памяти,
и адрес этого значения. Так вот, хотелось бы видеть этот адрес не как указатель,
а как строку. Подскажите, please!?
Предложить свой вариант решения можно
здесь
или воспользовавшись формой обратной связи (для HTML-формата).
Вопрос №25: Пример экспертов
на Delphi
Не могли бы Вы написать пример Экспертов на Delphi! Мне очень интересно как
они пишуться!
Предполагаемое решение: На этот
вопрос есть поговорка: експерт не думает,- он знает! Как для меня - я не хотел
бы быть экспертом, я хотел бы ДУМАТЬ - это самая лучшая тренировка для мозгов
и путь к развитию. Да и вообще можешь наблюдать коды тех, кто пишет ответы на
вопросы - там и найдешь профессионалный подход. Или это была просто ухмылка?
Предложить свой вариант решения можно здесь
или воспользовавшись формой обратной связи (для HTML-формата).
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||