Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перенос слов, помогите 
:(
    Опции темы
HAS
Дата 14.7.2005, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ing
*


Профиль
Группа: Участник
Сообщений: 170
Регистрация: 1.3.2005
Где: Internet

Репутация: 1
Всего: 2



Здравстуйте !
У меня возник вопрос. Надеюсь Вы мне поможите !
Юзер вводит текст в допустим edit1. Мне необходимо перенести текст, по нажатию на button1, разделителем является пробел и вывести этот в текст в label1. Но мне необходимо переносить текст по определенному правилу.
Допустим, в edit1 ввели такой текст 'Программирование на Borland Delphi'.
Юзер нажимает на button1.И вот тектс переводтся в label1 с условием, что 1 строка не должна быть больше чем 25 символов, если же получается так, что 26 символ входит в состав слова, то слово релить нельзя !
Например
Программирование на Borland Delphi
button1
Программирование на Borla
nd Delphi
**********************************************
это будет непраильно, нам же, слова делить нельзя, следовательно , после нажатия на кнопку, в label1.caption должен выглядить примерно так
Программирование на
Borland Delphi
**********************************************
Навярняка, кто-то сталкивался с такой проблеммой, если кому не жалко, плиз, выложите модуль или функцию/процедуру

ps: В DRKB & Delphi world искал, то что нужно не нашел !

Спасибо !
PM MAIL   Вверх
dvs
Дата 14.7.2005, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Владимир Драпалюк
**


Профиль
Группа: Участник Клуба
Сообщений: 660
Регистрация: 25.8.2003
Где: Воронеж->Москв а

Репутация: нет
Всего: 19



HAS, что непонятно?
Например, можно сделать так:
1. Читаешь строку из Edit
2. Меньше 25 символов - то сразу выводишь в Label.
3. Больше 25 символов - берешь 26 символ, если не пробел движешься в началу, до первого пробела. Дошёл до пробела - выводишь в Label и движешься дальше, пока строка не иссякнет.

Возможно, не самое лучшее, но это первое, что пришло в голову.
smile


--------------------
Любите друг друга!
PM MAIL WWW ICQ   Вверх
Yanis
Дата 14.7.2005, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 72
Всего: 111



По моему всё просто. Создай новый проект, в Unit1 впиши этот текст (Delphi 7):
Unit1
Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  with Label1 do
    begin
      WordWrap := True;
      AutoSize := False;
      Height := 70;
      Width := Label1.Canvas.TextWidth(StringOfChar('A', 25));
    end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Label1.Caption := Edit1.Text;
end;

end.


А вместо формы (Alt-F12) вот такой текст:
Form1
Код

object Form1: TForm1
  Left = 310
  Top = 125
  Width = 515
  Height = 258
  Caption = 'Form1'
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  OldCreateOrder = False
  OnCreate = FormCreate
  PixelsPerInch = 96
  TextHeight = 13
  object Label1: TLabel
    Left = 36
    Top = 42
    Width = 32
    Height = 13
    Caption = 'Label1'
  end
  object Edit1: TEdit
    Left = 30
    Top = 12
    Width = 337
    Height = 21
    TabOrder = 0
    Text = 'Edit1'
  end
  object Button1: TButton
    Left = 210
    Top = 66
    Width = 75
    Height = 25
    Caption = 'Button1'
    TabOrder = 1
    OnClick = Button1Click
  end
end

Если я правильно понял вопрос, то вроде всё работает smile


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
NoeR
Дата 14.7.2005, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 233
Регистрация: 6.2.2005

Репутация: нет
Всего: нет



Короч:
Код

function gettxt(x: integer; str: string): String;
Var i, j, z:integer;
vrem: string;
Label m;
begin
  vrem:='';
  i:=0; j:=0; z:=0;
  for i:=1 to length(str) do
  begin
    if str[i]=' ' then
    begin
      inc(j);
      if j=x-1 then
      begin
        z:=i+1;
        repeat
          vrem:=vrem+str[z];
          inc(z);
        until (str[z]=' ') or (str[z]='');
      end;
    end;
  end;
  gettxt:=vrem;
end;

Этот код показывает х-ое слово... Дальше разберись сам...
Вот примерно в чем разобраться, но токо это не пашет, а идею сам улови ;)
Код

procedure TForm1.Button1Click(Sender: TObject);
var i, sum:integer;
begin
  i:=1;
  Label1.Caption:='';
  if length(edit1.Text)<26 then Label1.Caption := Edit1.Text
  else
    repeat
      if length(gettxt(i, Edit1.Text))>25 then
      Begin
        ShowMessage('Ļåšāīå ńėīāī óęå ķå ļīäõīäčņ ģėčķ! Ņū ÷å ńąģ ķå āčäčųü?');
        Halt;
      end else
      begin
        sum:=length(gettxt(i, Edit1.Text))+1;
        if sum<26 then
          Label1.caption:=Label1.Caption+gettxt(i, Edit1.Text)
        else begin
          sum:=1;
          Label1.caption:=Label1.Caption+#13#10;
        end;
        inc(i);
      end;
    until gettxt(i, Edit1.Text)='';
end;


--------------------
По факту пропажи мужа, возбуждено... Два соседа.Если у Вас проблемы с ребенком, спросите у жены, может, это не Ваши проблемы!>>> NoeR++ <<<
PM MAIL ICQ   Вверх
HAS
Дата 14.7.2005, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ing
*


Профиль
Группа: Участник
Сообщений: 170
Регистрация: 1.3.2005
Где: Internet

Репутация: 1
Всего: 2



спасибо, но мне надо было вот эти свойства
AutoSize=False + WordWrap=True
PM MAIL   Вверх
~FoX~
Дата 15.7.2005, 08:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 13
Всего: 68



HAS
А если системный шрифт гиганского размера или наобарот мелкий, что тогда? smile


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
HAS
Дата 16.7.2005, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ing
*


Профиль
Группа: Участник
Сообщений: 170
Регистрация: 1.3.2005
Где: Internet

Репутация: 1
Всего: 2



Цитата
А если системный шрифт гиганского размера или наобарот мелкий, что тогда?

~FoX~, ну.. в моем случае этого быть не может ! smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0552 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.