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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> подскажите формат 
:(
    Опции темы
x77
Дата 17.6.2004, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



нужна поддержка рисунков (бэкграунда и просто вставок) + обычный rtf. хтмл - идеальный вариант, но требуется редактирование WYSIWYG, т.е. юзер должен быт способен в самом редакторе вставлять картинки, настраивать, и видеть результаты. варианты типа вставки тегов с последующим превью - не прокатывают.

спасибо.


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
_hunter
Дата 18.6.2004, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



и почему html не прокатывает?
в DreamVewer'e все происходит так, как было описанно smile.gif

P.S. можеш XML юзать


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
x77
Дата 18.6.2004, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



_hunter, клиент хочет собственный редактор без всяких внешних editor'ов. в этом вся проблема. форматдолжен быть собственным, или, по крайней мере, выглядеть собственным.



--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
_hunter
Дата 18.6.2004, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



дык что значит собственный?
называться по другому? так назови его sphtml ( super-puper html )
или сам редактор выглядеть должен необычно? так схему ему чветовую поставь с избытком черного цвета

куч ведь редкторов такого типа есть: DreamVewer, CoffeCup, ... -- и никто не жалуется smile.gif


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
RA
Дата 18.6.2004, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


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

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



Я пытаюсь понять суть вопроса. x77 а что ты пишешь (что за программа)?

Это сообщение отредактировал(а) RAdmin - 18.6.2004, 18:20
PM   Вверх
x77
Дата 18.6.2004, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



суть в следующем. одному буржую надо что-то типа картотеки по текстам. база данных с поиском и пр. блудней. со встроенным редактором, не внешним. чтобы можно было нажать на педаль, открылась форма, он ввёл в неё текст, сделал его жирным/синим/Arial/etc, задал фоновую картинку, при желании - навставлял ещё картинок уже не фоновых, а просто среди текста и т.д. формаровать всё это во внешнем редакторе он не хочет - это принципиальный вопрос. т.е. мне нужен некий формат, в котором я бы мог всё это реализовать. писать собственный html-редактор мне влом, деньги, которые платит буржуй того не стоят. а в richedit'е того, что он хочет не сделаешь. вот я и думаю, как бы извратиться и всё это сотворить.


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
Albinos_x
Дата 18.6.2004, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

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



Попробуй через сервер Word-а, а потом делай сохранение как Веб страницу


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
RA
Дата 18.6.2004, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


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

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



x77 ну раз такой буржуй то лично smile.gif я взялбы какойнить html-редактор и отредактировалбы его какимнить Редактором ресурсов.
PM   Вверх
December
Дата 19.6.2004, 00:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


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

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



Если проблема только в том, чтобы совместить ртф и бэкграунд, то совмести! Отдельно выбор рисунка, отдельно текст. Потом формируй хтмл и всё.


--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
youri
Дата 19.6.2004, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



По поводу формата: html - идеальный вариант для документов, которые нужны твоему буржую, а для тебя, по-моему,
Цитата
P.S. можеш XML юзать

Цитата
хтмл - идеальный вариант, но требуется редактирование WYSIWYG

Как вариант, в инете есть unit
http://www.jansfreeware.com/jfdelphi.htm#janxmltree
Правда, чувак пишет, что этот модуль в комерческих целях только с его разрешения использовать можно, к тому же периодически вспоминать его прийдется (его Jan Verhoeven зовут, а классы: TjanXMLTree, TjanXMLNode). Так что, если тебя это не смущает - можешь пользоваться smile.gif.


PM   Вверх
Felt
Дата 20.6.2004, 02:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Хм, а почему бы не хранить свой текст в формате RTF в обычной локальной базе данных? Формат поля (мм... кажется называется ) ПОЛЕ ОБЪЕКТА OLE. Редактировать можно через DBRichEdit. В базе весь текст хранится в виде двоичного кода. Я всегда так делаю...
PM MAIL   Вверх
x77
Дата 21.6.2004, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Felt, в парадоксе это FormattedMemo, в остальных базах - обычный блоб. не канает, ибо смысл не в ртф, а в ртф + рисунки, которые стандартный ртф в багландовской реализации не поддерживает.

December, думал. проблема в том, что помимо бэкграунда буржуй хочет сепаратные рисунки в самом тексте. как он это себе представляет - его проблемы, у меня есть постановка: фон + рисунки в тексте + форматирование ртф + редактирование as is, т.е. на этапе редактирования юзер должен видеть конечный результат.

неужели придётся на rxlib переползать? sad.gif


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
z-END
Дата 21.6.2004, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

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



x77
Мне вот тоже стало интересно как это осуществить... думаю двигаться надо в этом направлении:
Создать некое подобие Delphi DesignMode, собственно я етим и занимался целых два часаsmile.gif
все конечно очень криове даже Alpha версией не назовешь=), но все же... может такого же типа ченить сделаешь (только поприличней ну и не за два часа)... насамом деле интересная штука.
myEditor.pas
Код

unit myEditor;
interface
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, Menus, ComCtrls, StdCtrls, Buttons, ExtCtrls;

type
 TForm1 = class(TForm)
   Page: TScrollBox;
   Button3: TButton;
   Button2: TButton;
   DataEditor: TListBox;
   BitBtn1: TBitBtn;
   Button1: TButton;
   procedure BitBtn1Click (Sender: TObject);
   procedure ImgMouseMove (Sender: TObject; Shift: TShiftState; X, Y: Integer);
   procedure ImgMouseDown (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
   procedure TxtMouseMove (Sender: TObject; Shift: TShiftState; X, Y: Integer);
   procedure TxtMouseDown (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
   procedure ObjectSelect (Sender: TObject);
   procedure PageClick (Sender: TObject);
   procedure FormCreate (Sender: TObject);
   procedure DataEditorDblClick (Sender: TObject);
   procedure Button1Click (Sender: TObject);
   procedure Button2Click (Sender: TObject);
   procedure Button3Click (Sender: TObject);
 private
   procedure createImg(AName: String;  ALeft, ATop :Integer; Prop:Boolean);
   procedure createTxt(AName, AText:String; ALeft, ATop :Integer);
 public
 published
   procedure SetProperty(key, value: String);
   procedure UpdateDataEditor;
 end;

var
 Form1: TForm1;
 Selected: TObject;
implementation
{$R *.dfm}
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
createIMG ('Image_'+inttostr(Page.ControlCount), 150, 150, True);
end;
procedure TForm1.ImgMouseMove(Sender: TObject; Shift: TShiftState; X,  Y: Integer);
var
P: TPoint;
begin
if ssLeft in Shift then
begin
  GetCursorPos (P);
  P := Page.ScreenToClient ( Point(P.X-(Sender as TImage).UndockHeight,
                                   P.Y-(Sender as TImage).UndockWidth));
 (Sender as TImage).Left := P.X;
 (Sender as TImage).Top := P.Y;
end;
end;

procedure TForm1.ImgMouseDown(Sender: TObject; Button: TMouseButton;  Shift: TShiftState; X, Y: Integer);
begin
(Sender as TImage).UndockHeight := X;
(Sender as TImage).UndockWidth := Y;
end;

procedure TForm1.TxtMouseMove(Sender: TObject; Shift: TShiftState; X,  Y: Integer);
var
P: TPoint;
begin
if ssLeft in Shift then
begin
  GetCursorPos (P);
  P := Page.ScreenToClient ( Point(P.X-(Sender as TLabel).UndockHeight,
                                   P.Y-(Sender as TLabel).UndockWidth));
 (Sender as TLabel).Left := P.X;
 (Sender as TLabel).Top := P.Y;
end;
end;

procedure TForm1.TxtMouseDown(Sender: TObject; Button: TMouseButton;  Shift: TShiftState; X, Y: Integer);
begin
(Sender as TLabel).UndockHeight:=X;
(Sender as TLabel).UndockWidth:=Y;
end;

procedure TForm1.ObjectSelect(Sender: TObject);
begin
Selected := Sender;
DataEditor.Items.Clear;
if Assigned (Selected) then
    TCustomControl(Sender).BringToFront;
UpdateDataEditor;
end;

procedure TForm1.PageClick(Sender: TObject);
begin
ObjectSelect (nil);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
DataEditor.Items.NameValueSeparator := ':';
end;

procedure TForm1.DataEditorDblClick(Sender: TObject);
var
key, newP, P:String;
begin
P := DataEditor.Items.ValueFromIndex [DataEditor.ItemIndex];
key := DataEditor.Items.Names[DataEditor.ItemIndex];
newP := P;
InputQuery('Изменение параметров','Введите новое значение',newP);
if P <> newP then SetProperty (key,newP);
end;

procedure TForm1.SetProperty(key, value: String);
begin
if Selected.ClassName='TImage' then
begin
 if key = 'Name ' then
      (Selected as TImage).Name := value;
 if key = 'Top ' then
      (Selected as TImage).Top := strtoint(value);
 if key = 'Left ' then
      (Selected as TImage).Left := strtoint(value);
 if key = 'Proportional ' then
      (Selected as TImage).Proportional := (UpperCase(value)='TRUE');
end;
if Selected.ClassName='TLabel' then
begin
 if key = 'Name ' then
      (Selected as TLabel).Name := value;
 if key = 'Top ' then
      (Selected as TLabel).Top := strtoint(value);
 if key = 'Left ' then
      (Selected as TLabel).Left := strtoint(value);
 if key = 'Text ' then
      (Selected as TLabel).Caption := value;
end;
UpdateDataEditor;
end;

procedure TForm1.UpdateDataEditor;
begin
if Not Assigned (Selected) then exit;
if Selected.ClassName = 'TImage' then
begin
 DataEditor.Items.Values['Name '] := (Selected  as TImage).Name;
 DataEditor.Items.Values['Top '] := inttostr((Selected  as TImage).Top);
 DataEditor.Items.Values['Left '] := inttostr((Selected  as TImage).Left);
 if (Selected as TImage).Proportional
     then  DataEditor.Items.Values['Proportional '] := 'True'
     else  DataEditor.Items.Values['Proportional ']:='False';
end;

if Selected.ClassName='TLabel' then
begin
 DataEditor.Items.Values['Name '] := (Selected  as TLabel).Name;
 DataEditor.Items.Values['Top '] := inttostr((Selected  as TLabel).Top);
 DataEditor.Items.Values['Left '] := inttostr((Selected  as TLabel).Left);
 DataEditor.Items.Values['Text '] := (Selected as TLabel).Caption;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
createTxt ('Component_'+inttostr(Page.ControlCount), 'Мой текст', 10, 10);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
x: Integer;
F: TextFile;
begin
AssignFile (F, 'myfile.myFORMAT'); ReWrite (F);
for x := 0 to Page.ControlCount-1 do
begin
 if Page.Controls[x].ClassName = 'TImage' then
  begin
   Writeln(F, 'IMAGE');
   Writeln(F, (Page.Controls[x] as TImage).Name);
   Writeln(F, (Page.Controls[x] as TImage).Left);
   Writeln(F, (Page.Controls[x] as TImage).Top);
   Writeln(F, Byte((Page.Controls[x] as TImage).Proportional));
  end;
 if Page.Controls[x].ClassName = 'TLabel' then
  begin
   Writeln(F, 'TEXT');
   Writeln(F, (Page.Controls[x] as TLabel).Name);
   Writeln(F, (Page.Controls[x] as TLabel).caption);
   Writeln(F, (Page.Controls[x] as TLabel).Left);
   Writeln(F, (Page.Controls[x] as TLabel).Top);
  end;
end;
CloseFile(F);
end;

procedure TForm1.createImg(AName: String; ALeft, ATop: Integer;  Prop: Boolean);
var
I: TIMage;
dr: PChar;
begin
I := TImage.Create (Page);
GetMem (dr, 144);
GetWindowsDirectory (dr, 144);
I.Picture.LoadFromFile (String(dr) + '\Пузыри.bmp');
FreeMem (dr);
I.Parent := Page;
I.Top := ATop;
I.Left := ALeft;
I.Proportional := Prop;
I.Name := AName;
I.OnMouseMove := ImgMouseMove;
I.OnMouseDown := ImgMouseDown;
I.OnClick := objectSelect;
end;

procedure TForm1.createTxt(AName, AText: String; ALeft, ATop: Integer);
var
I: TLabel;
begin
I := TLabel.Create (Page);
I.Parent := Page;
I.Name := AName;
I.Caption := AText;
I.Top := ATop;
I.Left := ALeft;
I.OnMouseMove := TxtMouseMove;
I.OnMouseDown := TxtMouseDown;
I.OnClick := objectSelect;
end;

procedure TForm1.Button3Click(Sender: TObject);
var
F: TextFile;
p1,p2,p3,p4,s: String;
begin
AssignFile (F,'myfile.myFORMAT'); Reset (F);
while not eof(F) do
begin
  ReadLn (F,s); ReadLn (F,p1); ReadLn (F,p2);
  ReadLn (F,p3); ReadLn (F,p4);
 if S='IMAGE' then createImg (p1, strtoint(p2), strtoint(p3), (p4 = '1'));
 if S='TEXT' then createTxt (p1, p2, strtoint(p3), strtoint (p4));
end;
CloseFile(F);
end;

end.

myEditor.dfm
Код

object Form1: TForm1
 Left = 174
 Top = 166
 BorderStyle = bsDialog
 Caption = 'Form1'
 ClientHeight = 271
 ClientWidth = 564
 Color = clBtnFace
 Font.Charset = DEFAULT_CHARSET
 Font.Color = clWindowText
 Font.Height = -11
 Font.Name = 'MS Sans Serif'
 Font.Style = []
 FormStyle = fsNormal
 KeyPreview = True
 OldCreateOrder = False
 Position = poScreenCenter
 Visible = True
 OnCreate = FormCreate
 PixelsPerInch = 96
 TextHeight = 13
 object Page: TScrollBox
   Left = 160
   Top = 0
   Width = 404
   Height = 271
   Align = alRight
   TabOrder = 0
   OnClick = PageClick
 end
 object Button3: TButton
   Left = 78
   Top = 242
   Width = 75
   Height = 25
   Caption = 'Загрузить'
   TabOrder = 1
   OnClick = Button3Click
 end
 object Button2: TButton
   Left = 2
   Top = 242
   Width = 75
   Height = 25
   Caption = 'Сохранить'
   TabOrder = 2
   OnClick = Button2Click
 end
 object DataEditor: TListBox
   Left = 4
   Top = 28
   Width = 149
   Height = 213
   BevelKind = bkFlat
   BorderStyle = bsNone
   ItemHeight = 13
   TabOrder = 3
   OnDblClick = DataEditorDblClick
 end
 object BitBtn1: TBitBtn
   Left = 2
   Top = 2
   Width = 75
   Height = 25
   Caption = 'Картинка'
   TabOrder = 4
   OnClick = BitBtn1Click
 end
 object Button1: TButton
   Left = 80
   Top = 2
   Width = 75
   Height = 25
   Caption = 'Текст'
   TabOrder = 5
   OnClick = Button1Click
 end
end



--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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