Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.10.2014, 21:40   #1
kapiton
Новичок
Джуниор
 
Регистрация: 03.10.2014
Сообщений: 6
Восклицание РАЗБИЕНИЕ ТЕКСТА НА ДВА ПОЛЯ Memo, Delphi

Столкнулась с проблемой.
Из файла загружается текст в 2 и более полей memo, необходимо организовать перенос при заполнении одного из них.
Т.е вот печатается в memo1, а как только дошли до конца последний строки, то оставшийся текст со следующего слова грузится в memo2.
По типу колонок в word

честно говоря, идей даже нет, кроме как заранее ставить точки в коце первого поля, да и то мне кажется не сработает =(

может у бывалых есть пару нароботок или хотя бы идей?
kapiton вне форума Ответить с цитированием
Старый 03.10.2014, 21:47   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
может у бывалых есть пару нароботок или хотя бы идей?
Неа. Нема. Бывалые в MS Word макросы для такого пишут. Или как минимум пользуются какими нибудь репортами типа Crystal.
Впрочем...
Код:
Memo1.Lines.BeginUpdate; Memo2.Lines.BeginUpdate;
Memo1.Lines.Clear; Memo2.Lines.Clear;
with TStringList.Create do begin
 LoadFromFile('Файл');
 i:=0; while i<Count do begin
  if i<Count then Memo1.Lines.Append(Strings[i]); inc(i);
  if i<Count then Memo2.Lines.Append(Strings[i]); inc(i);
 end;
 free;
end;
Memo1.Lines.EndUpdate; Memo2.Lines.EndUpdate;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.10.2014, 21:49   #3
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
может у бывалых есть пару нароботок или хотя бы идей?
Для начала я хочу узнать, для чего такой фистинг тебе нужен! Ума не разложу, как такое порно можно применять на пактике.

Колись давай!!!111
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 03.10.2014, 22:04   #4
kapiton
Новичок
Джуниор
 
Регистрация: 03.10.2014
Сообщений: 6
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
Для начала я хочу узнать, для чего такой фистинг тебе нужен! Ума не разложу, как такое порно можно применять на пактике.

Колись давай!!!111
да чего далеко ходить) Задали что-то типа макета газеты, с загрузкой из файла. т.е. вот есть форма и в нее давай фигачить текст. Ну а в газете любят колонки, вот и попросили про это не забыть и попробовать через 2 поля мемо
kapiton вне форума Ответить с цитированием
Старый 03.10.2014, 22:28   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Задали что-то типа макета газеты
Для газет используются программы специально предназначеные для иллюстраций.
Тут твое Мемо не прокатит.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.10.2014, 22:30   #6
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Задали что-то типа макета газеты
Цитата:
попросили про это не забыть и попробовать через 2 поля мемо

Страшный сон редактора.
Забудь про мемо и ваще про компоненты. Такое надо рисовать только вручную.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 03.10.2014, 22:42   #7
kapiton
Новичок
Джуниор
 
Регистрация: 03.10.2014
Сообщений: 6
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение

Страшный сон редактора.
Забудь про мемо и ваще про компоненты. Такое надо рисовать только вручную.
Не глупая и понимаю как это делается мастерами вестарщиками)
но от этого моя проблема не исчезает,сказали так, надо сделать так)
по делу совету будут, кроме как бросить-плюнуть-забыть?
kapiton вне форума Ответить с цитированием
Старый 03.10.2014, 22:48   #8
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
по делу совету будут, кроме как бросить-плюнуть-забыть?
Нет.
Такую прогу ты не осилишь, это работа для группы программистов-профессионалов.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 03.10.2014, 23:15   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
по делу совету будут, кроме как бросить-плюнуть-забыть?
А что выше мой совет не подошел?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.10.2014, 00:44   #10
Step_UA
Форумчанин
 
Аватар для Step_UA
 
Регистрация: 09.06.2011
Сообщений: 388
По умолчанию

Цитата:
Сообщение от kapiton Посмотреть сообщение
...по делу совету будут, кроме как бросить-плюнуть-забыть?
Совсем не оптимально, особенно при работе с большим текстом - как идея ))
Код:
function NextPart(M:TMemo):string;
// возвращает текст "не помещающийся" в Memo
var
  curP:TPoint;
  MaxLine, ChPos, MaxPos:Integer;
  txt:String;
  Can : TCanvas;
begin
  Can := TCanvas.Create;
  Can.Handle := CreateCompatibleDC(GetDC(0));
  try
    Can.Font.Assign(M.Font);
    MaxLine:=trunc((M.Height-6)/ Can.TextHeight('Wg'))-1; //количество строк
    //6 - добавляется размер обрамления вверху и внизу компонента TMemo; значение подбирается
  finally
    DeleteDC(Can.Handle);
    Can.Handle := 0;
    Can.Free;
  end;
  m.SelLength:=0;
  m.SelStart:=0;
  ChPos:=0;
  maxpos:=length(M.Text);
  repeat
    inc(ChPos);
    m.SelLength:=ChPos;
    curP:=M.CaretPos;
  until (ChPos = MaxPos) or (M.CaretPos.Y > MaxLine );
  txt:=m.Text;
  NextPart:=copy(txt, chpos,MaxPos-ChPos);
  delete(txt, chpos,MaxPos-ChPos);
  m.Text:=txt;
end;
способ определения высоты одной строки взят с этого форума здесь
Вызов для 3-х Memo
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo1.Lines.BeginUpdate; Memo2.Lines.BeginUpdate; Memo3.Lines.BeginUpdate;
  Memo1.Lines.LoadFromFile('D:\Test.txt');

  memo2.Text:=NextPart(memo1);
  memo3.Text:=NextPart(memo2);
  Memo1.Lines.EndUpdate; Memo2.Lines.EndUpdate; Memo3.Lines.EndUpdate;
end;
на неконкретные вопросы даю неконкретные ответы ...
Step_UA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема с отображением данных поля MEMO в Delphi betirsolt БД в Delphi 8 08.05.2013 12:39
Delphi передача текста из memo в memo hauk70 Помощь студентам 27 22.05.2012 18:33
Разбиение текста Shurik1976 Visual C++ 0 04.03.2012 13:12
Разбиение одного subitems на два значени bulldog5293 Общие вопросы Delphi 1 12.11.2010 22:04
Печать текста из поля МЕМО(Delphi) ChEaTeR-abc Помощь студентам 2 01.07.2010 16:48