Вопрос № 39651: Вопрос в следующем.
Надо сделать Список (ListBox или ComboBox).
Как заранее это сделать в программе - я знаю.
(TForm1.ComboBox1.Items.TString - запись строк выбора)
А вот как это сделать во время работы программы?
Если можно, напи...Вопрос № 39660: Добрый вечер...
Скожите что я делаю не так.... постоянно вылезает "Incompatible types: 'method pointer and regular procedure' "
webfile.ru/898252 это ссылка на исходники проэкта.....Вопрос № 39683: Вопрос по БД. При записи отредактированной записи (простите за тавтологию) делаю запрос на подтверждение в обработчике BeforePost. Возможен ответ "Да", "Нет", "Отмена". С первым и последним проблем нет, а вот в случае &q...Вопрос № 39684: СРОЧНО!!!!!!!!!!!!!!!!!!!!!
Как изменить картинку спрайта при отрисовке, если я сделал в ней изменения. Мне нужно чтобы она выводила измененное изображение, а не исходное.
Излбражение типа BMP, хранится в DXImageList.
Буду очень признател...Вопрос № 39705: Здравствуйте! В Delphi 7 возле Caption каждой формы есть значек делфи(такая же иконка у .exe-файлов, созданных им). Подскажите, пожалуйста, как заменить эти иконки на свои? Заранее благодарен!...
Вопрос № 39.651
Вопрос в следующем.
Надо сделать Список (ListBox или ComboBox).
Как заранее это сделать в программе - я знаю.
(TForm1.ComboBox1.Items.TString - запись строк выбора)
А вот как это сделать во время работы программы?
Если можно, напишите коротенький пример записи программы.
Задача значит такая.
Имеется TXT-файл, в нём есть несколько строчек (коротких) вот их и нужно занести в ListBox или ComboBox.
TXT-файл может изменятся в процессе работы программы (изменятся кол-во строк).
Программа динамически должна определять кол-во строчек и заносить их в ListBox или ComboBox (обновлять Список сразу весь).
Пример.
В TXT-файле хранятся формулы (иногда длинные).
Чтение строк из файла - не проблема.
1. Скажите, как их разместить в ListBox или ComboBox програмно?
2. Откуда узнать строчку, которая появляется после выбора (тип String), я не нашёл.
Номер Index'a - 1+Form1.ComboBox1.ItemIndex, это известно (отчёт должен идти с 1).
3. Как обределить строчку которая была введена пользователем в готовой программе в поле ComboBox?
И авто-запись её в Список?
4. Как сохранить обновлённый Список строк (весь) в TXT-файл, построчно?
В смысле, как записать TXT-файл я знаю, а вот откуда эти строчки брать?
Типа,
var Is :String;
BEGIN
Is:=Form1.ComboBox1.StringIndex (что ли? по типу ...ItemIndex). Или как?
END.
Но естественно, такого .StringIndex нету в природе.
Заранее спасибо всем.
Алекс
Отправлен: 07.04.2006, 15:58
Вопрос задал: AlexD (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: Ерёмин Андрей
Здравствуйте, AlexD!
Очень много вопросов, постараюсь ответить на некоторые, чтобы было понятно.
Вот так можно создавать TListBox динамически:
procedure TForm1.Button1Click(Sender: TObject); var L: TListBox; begin L:=TListBox.Create(Form1); L.Parent:=Form1; L.Left:=100; L.Top:=30; L.Width:=200; L.Height:=300; L.Visible:=True; end;
Вот так загрузить в ListBox строки из файла:
ListBox.Items.LoadFromFile('C:debug.txt');
А вот так узнать содержимое строки (в данном случае - 2-ой):
ListBox.Items[2];
А вот это вернёт номер строки, содержащей указанную строку:
ListBox.Items.IndexOf('bla-bla-bla');
Вроде бы, про основные моменты рассказал. Но лучше всё-таки создавать компонент во время разработки, т.к. проблем меньше и многие действия (удаление, например, после завершения программы) выполнятся автоматически.
--------- Нет правила без исключений. Правило без исключений - исключение из правил.
Отвечает: Рубан Николай Николаевич
Здравствуйте, AlexD!
Смотри поочередно:
1) добавляем програмно из файла в Combo(Listbox - подобно)
var f:textfile;
s:string;
begin
AssignFile(f,'1.txt');
Reset(f);
while not eof(f) do
begin
readln(f,s);
ComboBox1.Items.Add(s);
end;
ComboBox1.Text:=ComboBox1.Items.Strings[0];
CloseFile(f);
end;
2) Сохраняем построчно весь список
var f:textfile;
i:integer;
begin
AssignFile(f,'2.txt');
Rewrite(f);
for i:=0 to ComboBox1.Items.Count-1 do
Writeln(f,ComboBox1.Items.Strings[i]);
CloseFile(f);
end;
или
ComboBox1.Items.SaveToFile('2.txt');
3)Как обределить строчку которая была введена пользователем в готовой программе в поле ComboBox?
procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: Char);
begin
if Key=#13 then {вводим по нажатию Enter в ComboBox1}
begin
ComboBox1.Items.Add(ComboBox1.Text);
end;
end;
Ответ отправил: Рубан Николай Николаевич (статус: 2-ой класс)
Ответ отправлен: 10.04.2006, 11:24
Вопрос № 39.660
Добрый вечер...
Скожите что я делаю не так.... постоянно вылезает "Incompatible types: 'method pointer and regular procedure' "
webfile.ru/898252 это ссылка на исходники проэкта..
Приложение:
Отправлен: 07.04.2006, 16:59
Вопрос задал: DeMON (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Boriss
Здравствуйте, DeMON!
Таки он и пишет Вам, что несовместимыые типы:
ожидается указатель на метод объекта (как правило, данного объекта), а получает указатель на обычную (регулярную процедуру)
Причина в различии механизмов вызова метода объекта и процедуры
Самое простое решение проблемы: создаете метод, его туда пишите, а этому методу никто не мешает вызвать любую подпрограмму
--------- Вывод - то место в тексте, где вы устали думать
Ответ отправил: Boriss (статус: Профессор) Россия, Саранск Организация: факультет Электронной техники, Мордовский госуниверситет Адрес: г. Саранск WWW:Программирование на Паскале ---- Ответ отправлен: 07.04.2006, 17:36 Оценка за ответ: 5
Отвечает: Артём Шегеда
Здравствуйте, DeMON!
Внимательно прочти раздел "Procedural types" справки Delphi - там чётко указано отличие между указателем на метод класса и на процедуру:
A method pointer is really a pair of pointers; the first stores the address of a method,
and the second stores a reference to the object the method belongs to.
Именно поэтому не проходит присвоение указателя на процедуру переменной-указателю на метод OnTimer.
В приложении пример разрешения проблемы. Примечательно то, что если сам объект типа TTimerWrapper не нужен, его и создавать нет необходимости.
Приложение:
Ответ отправил: Артём Шегеда (статус: 5-ый класс)
Ответ отправлен: 07.04.2006, 19:14 Оценка за ответ: 5
Вопрос № 39.683
Вопрос по БД. При записи отредактированной записи (простите за тавтологию) делаю запрос на подтверждение в обработчике BeforePost. Возможен ответ "Да", "Нет", "Отмена". С первым и последним проблем нет, а вот в случае "Нет" хочу: 1. как в случае "Отмена" отменить Post; 2. чтобы DBGrid вышла из режима редактирования (маркер слева от записи опять треугольным стал). Я это сделал кривовато путём программного нажатия кнопки Esq. Хотелось бы сделать "правильно".
Спасибо.
Попробуй воспользоваться методами самого DataSet:
ID_CANCEL: begin
DataSet.Cancel;
Abort;
end;
Ответ отправил: Артём Шегеда (статус: 5-ый класс)
Ответ отправлен: 07.04.2006, 23:51 Оценка за ответ: 5 Комментарий оценки: Попробовал, понравилось.
Вопрос № 39.684
СРОЧНО!!!!!!!!!!!!!!!!!!!!!
Как изменить картинку спрайта при отрисовке, если я сделал в ней изменения. Мне нужно чтобы она выводила измененное изображение, а не исходное.
Излбражение типа BMP, хранится в DXImageList.
Буду очень признателен, если получу ответ.
Отправлен: 07.04.2006, 22:46
Вопрос задал: Konst (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Устинов Сергей Евгеньевич
Здравствуйте, Konst!
Попробуй у спрайта свойству Image присвоить еще раз картинку из DXImageList
Ответ отправил: Устинов Сергей Евгеньевич (статус: 3-ий класс)
Ответ отправлен: 08.04.2006, 00:33 Оценка за ответ: 2 Комментарий оценки: Думаю, очевидно, что я до этого догадался, но если бы это работало, я бы на задавал вопрос.
Вопрос № 39.705
Здравствуйте! В Delphi 7 возле Caption каждой формы есть значек делфи(такая же иконка у .exe-файлов, созданных им). Подскажите, пожалуйста, как заменить эти иконки на свои? Заранее благодарен!
Отвечает: romodos
Здравствуйте, Андрющенко Вячеслав Васильевич!
Очень просто.
Выбираем меню Project-Options, далее вкладка Application.
Жмем на кнопку Load Icon и загружаем свою иконку.
Все. Надеюсь, разберетесь
--------- The Source is Our Soul. FAQ me off!
Ответ отправил: romodos (статус: Практикант)
Ответ отправлен: 08.04.2006, 08:22 Оценка за ответ: 5
Отвечает: AnD1
Здравствуйте, Андрющенко Вячеслав Васильевич!
И еще в дополнение. У каждой "формы" есть свойство Icon там можно выбрать иконку для каждой формы в отдельности, независимо от иконки приложения
Ответ отправил: AnD1 (статус: 3-ий класс)
Ответ отправлен: 08.04.2006, 09:36
Отвечает: Устинов Сергей Евгеньевич
Здравствуйте, Андрющенко Вячеслав Васильевич!
Я знаю два метода: первый - Project ->Options -> Application -> Load Icon
(таким методом изменяется иконка для всего приложения (включая иконку приложения на панели задач, а также все иконки у окон, если они не выставлены дополнительно))
Второй: у каждой фомы есть свойство Icon. Тут можно присвоить каждой форме свою иконку, причем приоритет этого присвоения выше, чем приоритет первого метода.
Отвечает: Diman_A
Здравствуйте, Андрющенко Вячеслав Васильевич!
Ну и в дополнение к ответам предыдущих экспертов: можно любым редактором ресурсов (напр. Restorator) можно изменить иконку приложения, и тогда и возле caption будет появляться другая иконка (та, которую вы поставили).
Ответ отправил: Diman_A (статус: 8-ой класс)
Ответ отправлен: 08.04.2006, 17:04