Memo: поочередно добавлять строки. Как организовать?

Ответить
nady_kamcha
Сообщения: 5
Зарегистрирован: 15 май 2010, 13:48

только начала изучать делфи и вот столкнулась с таким заданием

Самостоятельное задание

Создайте новое приложение. Установите на форму компоненты DateTimePicker, Memo и кнопку, чтобы добавлять в Memo1 строки. Вначале добавьте строку с текущей датой в формате, принятом в русских версиях Windows (функция DateToStr(Date)). Затем добавьте пустую строку, чтобы отделить ее от выводимых далее форматов. Затем придумайте 10 разных форматов для функции FormatDateTime(),и поочередно добавьте их в Memo1 с той датой, которая указана в DateTimePicker1. Кстати, чтобы не писать длинные названия, вроде
DateTimePicker1.Date

переименуйте компонент (свойство Name) в более короткое имя, например, DTP1, тогда обращение получится короче:
DTP1.Date

я так думаю, что нужен цикл, но как его правильно организовать, чтобы строки со всеми 10 форматами добавлялись не разом, а поочередно при каждом нажатии кнопки. Думаю, можеn добавить дополнит.элемент на форму, радиобаттон например... хотя в задании этого не дано...
Помогите пожалуйста бедной девушке с севера...
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

Не нужен там цикл. Можно, например, ввести переменную (скажем, i) и массив из 10 разных форматов. При щелчке на кнопке добавляем строку с i-м форматом и увеличиваем i на 1
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
nady_kamcha
Сообщения: 5
Зарегистрирован: 15 май 2010, 13:48

спасибо за ответ! сейчас попробую, но не понимаю, как без цикла...
nady_kamcha
Сообщения: 5
Зарегистрирован: 15 май 2010, 13:48

Вы так имели в виду:

procedure TForm1.Button1Click(Sender: TObject);
var
i:byte;
a: array [1..4] of string;
begin
a[1]:='dd mm yy';
a[2]:='dd mm yyyy';
a[3]:='dd mmm yy';
a[4]:='dd mmm yyyy';
Memo1.Lines.Add(FormatDateTime(a,DateTimePicker1.Date));
i:=i+1;
end;

Так не работает ((( добавляет символы <E, почему?
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

var i:byte=1; a: array [1..4] of string; - это выносится в основную программу

a[1]:='dd mm yy';
a[2]:='dd mm yyyy';
a[3]:='dd mmm yy';
a[4]:='dd mmm yyyy';
А это - например, в Form1.Create;
Memo1.Lines.Add(FormatDateTime(a,DateTimePicker1.Date));
i:=i+1;
А это остается в Button1.Click
Потому что иначе переменная i у вас создается внутри и никак не инициализируется - в ней скорее всего 0. А а[0] пустое.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
nady_kamcha
Сообщения: 5
Зарегистрирован: 15 май 2010, 13:48

спасибо большое, теперь дошло )))
Ответить