Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 58
от 04.03.2005, 16:20

Администратор:Калашников О.А.
В номере:Вопросов: 4, Ответов: 22


Вопрос № 17544: Уважаемые эксперты! Извините за глупый вопрос но как вывести содержимое массива типа byte в Label. С уважением Антон ...
Вопрос № 17546: Уважаемые эксперты. Допустим я ввел с клавиатуры информацию в StringGrid. Можно ли и как сделать наподобии ini файла что бы при выходе из программы и последующем ее запуске информацию не пришлось вводить снова. С уважением Антон. ...
Вопрос № 17563: Уважаемые эксперты. Может я чего то и не понимаю а может не так объяснил. Когда я вывожу содержимое массива в Memo memo.lines.text:= memo.lines.text + ' ' + ( inttostr(romsensor[n,i])); выводится полностью содержимое всего массива, а ...
Вопрос № 17565: Уважаемые эксперты. Как в StringGrid разрешить редактирование например только в 1 и 5 столбце и можно ли сделать фиксированными только 2 и 3 столбец и если можно то как. С уважением Антон. ..

Вопрос № 17544
Уважаемые эксперты!
Извините за глупый вопрос но как вывести содержимое массива типа byte в Label.
С уважением Антон
Отправлен: 26.02.2005, 19:29
Вопрос задал: антон (статус: Посетитель)
Всего ответов отправлено: 6

Отвечает: Sh-st
Здравствуйте, антон!
i-начало массива
j-конец
q:Integer;
label1.caption:='';
for q:=i to j do
label1.caption:=inttostr(massiv[q]));
Ответ отправил: Sh-st (статус: 2-ой класс)
Отправлен: 26.02.2005, 19:38
Оценка за ответ: 5

Отвечает: Bob Johnson
Здравствуйте, антон!
C Помощью функции IntToStr преобразовать число в строку и затем вывести...

* EMan2.0: ---===*** Debug mode ***===---

Ответ отправил: Bob Johnson (статус: Академик)
Отправлен: 26.02.2005, 21:31

Отвечает: SteelNick
Здравствуйте, антон!
Байт по байту:
Label1.Caption:='';
for i:=low(Arr) to high(Arr) do
Label1.Caption:=Label1.Caption+Arr[i];
Ответ отправил: SteelNick (статус: Практикант)
Отправлен: 26.02.2005, 21:55
Оценка за ответ: 5

Отвечает: Vj
Здравствуйте, антон!
Функция inttostr(par: integer) поможет тебе!
Пример:
var i: byte;
i2: integer;
...
Label1.Capture:=inttostr(i);
Label2.Capture:='Текущее значение = '+inttostr(i2);
P.S. Обратно - strtoint(s: string)
P.P.S. C вещественными - вместо int - float.
Удачи.
Ответ отправил: Vj (статус: 10-ый класс)
Отправлен: 27.02.2005, 03:08
Оценка за ответ: 4

Отвечает: zer0access
Здравствуйте, антон!
Это делается достаточно просто. Просто запускаем цикл по массиву и в каждой итерации прибавляем к содержимому Label'a элемент массива. Пример кода в приложении. Можно использовать вспомогательную строковую переменную. Сначала в цикле формируем строку, а потом Label1.Caption присваиваем эту строку.

Приложение:

Ответ отправил: zer0access (статус: Студент)
Отправлен: 27.02.2005, 18:56
Оценка за ответ: 5

Отвечает: sir henry
Здравствуйте, антон!
А массив большой? Если большой, то вместо Label лучше, по-моему, использовать Memo сделаное только для чтения.
Общий принцип таков:
Считываете каждое значение массива, преобразуете его в строку и добавляете ее либо в Label, либо в Мемо.
var ar: array[0..10] of byte;
i: integer;
Begin
For i:=0 to 10 do
Label:=Label+IntToStr(ar[i]);
End;
Вариант с мемо:
var ar: array[0..10] of byte;
i: integer;
s: string;
Begin
For i:=0 to 10 do
s:=s+IntToStr(ar[i]);
Memo.Lines.Add(s);
End;
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 28.02.2005, 05:29


Вопрос № 17546
Уважаемые эксперты.
Допустим я ввел с клавиатуры информацию в StringGrid.
Можно ли и как сделать наподобии ini файла что бы при выходе из программы и последующем ее запуске информацию не пришлось вводить снова.
С уважением Антон.
Отправлен: 26.02.2005, 19:41
Вопрос задал: антон (статус: Посетитель)
Всего ответов отправлено: 5

Отвечает: Sh-st
Здравствуйте, антон!
Почитай книгу вначале какую-нибудь, а то вопросы странные...
У Stringgrida есть возможность обращать к каждой ячейки и получуть из нее любую информацию: текст, размеры.
Ответ отправил: Sh-st (статус: 2-ой класс)
Отправлен: 26.02.2005, 20:11
Оценка за ответ: 2

Отвечает: SteelNick
Здравствуйте, антон!
Можно. У StringGrid есть свойство Rows (массив строк). Каждая типа TStrings. А у TSrings есть метод SaveToFile. Попробуй.
Ответ отправил: SteelNick (статус: Практикант)
Отправлен: 26.02.2005, 21:08
Оценка за ответ: 5

Отвечает: CJ
Здравствуйте, антон!
Ну ты сам сказал правильно, сначала при выходе из программы сохраняй всю информацию в ini-файл,
а при запуске читай из него.
Ответ отправил: CJ (статус: Студент)
Отправлен: 27.02.2005, 13:43
Оценка за ответ: 3

Отвечает: sir henry
Здравствуйте, антон!
А Вы не хотите вместо StringGrid использовать таблицу базы данных какого либо формата? Она хранится на диске, загружается в память во время работы проги и все, что Вы туда внесли, сохраняется на диске. Это будет проще, чем корячиться со StringGrid. :)
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 28.02.2005, 08:58
Оценка за ответ: 4

Отвечает: Shizuku Tsukishima
Здравствуйте, антон!
Можно. Используйте файловые функции (AssignFile, Reset, CloseFile)
и свойство StringGrid1.Cells[aCol,aRow]; для доступа к содержимому ячейки таблицы.
Внимание! Столбец в TGrid указывается первым (aCol). Количество строк и столбцов в таблице можно легко получить:
StringGrid1.RowCount; // количество строк
StringGrid1.ColCount; // количество столбцов
Не забывайте учитывать наличие/отсутствие фиксированных строк/столбцов.
Думаю материала достаточно. Удачи.
Ответ отправила: Shizuku Tsukishima (статус: 3-ий класс)
Отправлен: 28.02.2005, 15:29
Оценка за ответ: 5


Вопрос № 17563
Уважаемые эксперты.
Может я чего то и не понимаю а может не так объяснил.
Когда я вывожу содержимое массива в Memo
memo.lines.text:= memo.lines.text + ' ' + ( inttostr(romsensor[n,i]));
выводится полностью содержимое всего массива, а когда в Label
label1.caption:=inttostr(romsensor[n,i]);
то только последний элемент, а как вывести в Label все значения массива?
С уважением Антон.
Отправлен: 27.02.2005, 09:14
Вопрос задал: антон (статус: Посетитель)
Всего ответов отправлено: 9

Отвечает: John Freeman
Здравствуйте, антон!
Не тормозить!!! ;)
memo.lines.text:= memo.lines.text + ' ' + ( inttostr(romsensor[n,i]));
добавляет,
label1.caption:=inttostr(romsensor[n,i]);
переписывает, так что выпей пива и напиши:
label1.caption:=label1.caption+' '+inttostr(romsensor[n,i]);
А для memo вообще то есть memo1.lines.add
Ответ отправил: John Freeman (статус: Специалист)
Отправлен: 27.02.2005, 14:41
Оценка за ответ: 5

Отвечает: zer0access
Здравствуйте, антон!
Ты сам же ответил на свой вопрос. Когда ты добавляешь в Memo, то присваиваешь свойству text _текущее_ содержимое Memo плюс твои данные. Аналогично надо делать и с Label.

Приложение:

Ответ отправил: zer0access (статус: Студент)
Отправлен: 27.02.2005, 19:05
Оценка за ответ: 5

Отвечает: Bob Johnson
Здравствуйте, антон!
А ты не пробовал писать label1.caption:= label1.caption + inttostr(romsensor[n,i]);

* EMan2.0: ---===*** Debug mode ***===---

Ответ отправил: Bob Johnson (статус: Академик)
Отправлен: 27.02.2005, 19:24

Отвечает: Vj
Здравствуйте, антон!
Итак в Memo:
var n, i: integer;
...
for n:=1 to count do //count - значение, до которого будем "тянуть" переменную n
for i:=1 to count2 do //count2 - значение, до которого будем "тянуть" переменную i
Memo.Add(inttostr(romsensor[n,i])); //в Memo заносим строчку со значением ячейки [n,i]
А теперь в Label:
var n, i: integer;
s: string;
...
s:='';
for n:=1 to count do //count - значение, до которого будем "тянуть" переменную n
for i:=1 to count2 do //count2 - значение, до которого будем "тянуть" переменную i
s:=s+inttostr(romsensor[n,i])+' ';
Label1.Caption:=s; //в Label заносим строчку s со значениями всех ячеек массива romsensor
Удачи.
Ответ отправил: Vj (статус: 10-ый класс)
Отправлен: 28.02.2005, 00:26
Оценка за ответ: 5

Отвечает: sir henry
Здравствуйте, антон!
Вот так:
Label1.Captin:=Label1.Caption+inttostr(romsensor[n,i]);
т.е. к тому, что уже есть ты добавляешь следующий элемент массива.
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 28.02.2005, 08:54
Оценка за ответ: 5

Отвечает: Samum
Здравствуйте, антон!
Видимо вы привели сточки из цикла. Если это так, то все просто: в первом случае в каждой итерации вы добавляете новое значение из массива к строке (см. memo.lines.text+...). Dj втором же случае вы каждый раз заменяете значение в label.caption. Чтобы вывести весь массив в label надо писать label1.caption:=label1.caption+inttostr(romsensor[n,i]);
Ответ отправил: Samum (статус: Специалист)
Отправлен: 28.02.2005, 13:02
Оценка за ответ: 5

Отвечает: Shizuku Tsukishima
Здравствуйте, антон!
В Label по умолчанию влазит только одна строка и ещё Ваш код с ошибкой, Вы каждый раз трёте новой строкой предыдущую, в итоге остаётся последняя из строк.
Лекарство:
Label1.WordWrap:=True;
Label1.Caption:=Label1.Caption + IntToStr(romsensor[n,i]); // в цикле по лементам массива
Ответ отправила: Shizuku Tsukishima (статус: 3-ий класс)
Отправлен: 28.02.2005, 14:50
Оценка за ответ: 5

Отвечает: Sh-st
Здравствуйте, антон!
Приведи полный код вывода массива в Tmemo и в TLabel. Тогда посмотрим.
Ответ отправил: Sh-st (статус: 2-ой класс)
Отправлен: 28.02.2005, 16:57

Отвечает: CJ
Здравствуйте, антон!
В label выводитьься только одна строка. А memo состоит из строк типа TString.
Ответ отправил: CJ (статус: Студент)
Отправлен: 01.03.2005, 16:56


Вопрос № 17565
Уважаемые эксперты.
Как в StringGrid разрешить редактирование например только в 1 и 5 столбце и можно ли сделать фиксированными только 2 и 3 столбец и если можно то как.
С уважением Антон.
Отправлен: 27.02.2005, 11:13
Вопрос задал: антон (статус: Посетитель)
Всего ответов отправлено: 2

Отвечает: SteelNick
Здравствуйте, антон!
Никак простыми методами. Можно запретить редактирование во всем гриде, затем при входе в соответствующую ячейку создавать над нею Edit или ComboBox или что еще. Если интересна конкретика - пиши на мою личную почту.
Ответ отправил: SteelNick (статус: Практикант)
Отправлен: 27.02.2005, 14:55
Оценка за ответ: 4

Отвечает: Sh-st
Здравствуйте, антон!
Нет нельзя. Проверяй вся вручную. Если курсор в 1 столбце, то stringgrid1.row:=-1;
Примерно так.
Ответ отправил: Sh-st (статус: 2-ой класс)
Отправлен: 28.02.2005, 16:55
Оценка за ответ: 5


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.


http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.delphiplus
Отписаться

В избранное