Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по Delphi 2

Автор: GTA3
Дата сообщения: 13.09.2006 20:32
Bonivur
нет ты не понял эта строка
memo1.Lines.Text:='TUTDF' +chr(9)+ '1.0r' +chr(9)+ '20050701' +chr(9)+ 'S401BB000001' +chr(9)+ ''+chr(9)+ '' +z+ '' +chr(9)+ 'M3b2gGta' +chr(9)+ 'is a sample comment' +chr(13);

она не прерывная не помещается на экран приходится крутить полосу прокрутки
Я просто хотел что бы он компактен был и без полосы прокрутки я мог просмотреть весь код....
Автор: Bonivur
Дата сообщения: 13.09.2006 20:35
GTA3

Цитата:
нет ты не понял эта строка

Дык, если по плюсам в редакторе делить то все должно быть в порядке. Видишь плюс, ставишь после него курсор, жмешь Enter строка после курсора перемещается вниз, и так далее.
'Hello'+' I'm a boy. '+'And you?'.

после деления "по плюсам будет в редакторе выглядеть вот так.

'Hello'+
' I'm a boy. '+
'And you?';

Но вообще-то ты пишешь Memo1.Lines.Text а можно просто Memo1.Text :=
И еще - плюсы можно и на другую строчку переносить. Основное правило в редакторе не разделять на разных строках одинарные кавычки и текст. Например:
'Hello'+'
I'm a boy';
видишь там одинарная кавычка "одинокая" осталась? Это есть грех И еще не забудь в КОНЦЕ ВСЕЙ строки твоей длинющей поставить точку с запятой, а не после плюсов и прочего. Только в самом конце строки!

Автор: SERGE_BLIZNUK
Дата сообщения: 13.09.2006 21:29
GTA3

Цитата:
ок попробую поюзать помощь на эту тему

да бесполязняк юзать помощь на эту тему ;-))
и вообще, это не совсем по Дельфи вопросец.
Тебе же ясно ответили - есть пробелы, а есть символ табуляции, который равен chr(9), он же #9
(можно писать так := 'TUFT'#9'Продолжение'#9'строки'; - а вот как его покажет текстовый редактор (сколько пробелов будет отображаться вместо пробела) зависит от этого самого редактора.

добавлено
сорри за мой пост, ответил уже после того как прочитал, что дискуссия успешно продолжилась и задача практически решена.
Автор: GTA3
Дата сообщения: 13.09.2006 21:31
Bonivur


Цитата:
Основное правило в редакторе не разделять на разных строках одинарные кавычки и текст. Например:
'Hello'+'
I'm a boy';


а какой нибудь выигрыш от этого бывает в производительности или это просто упрощает код?

Добавлено:
SERGE_BLIZNUK

Цитата:
да бесполязняк юзать помощь на эту тему )
и вообще, это не совсем по Дельфи вопросец.
Тебе же ясно ответили - есть пробелы, а есть символ табуляции, который равен chr(9), он же #9 - а вот как его покажет текстовый редактор (сколько пробелов будет отображаться вместо пробела) зависит от этого самого редактора.


показывает он как надо видимо этой формат табулирования фиксированный во всех редакторах
Автор: SERGE_BLIZNUK
Дата сообщения: 13.09.2006 21:42
GTA3

Цитата:
показывает он как надо видимо этой формат табулирования фиксированный во всех редакторах

ну и славно. с чем искренне вас и поздравляю. Хорошо, когда проблема отпадает сама собой ;-)))

Добавлено:

Цитата:
'Hello'+'
I'm a boy';
а какой нибудь выигрыш от этого бывает в производительности или это просто упрощает код?

выигрыша НИКАКОГО не будет в любом случае. - текст исходный более читабельный и всё.
НО, в том случае, когда вы разнесёте часть строкой константы на несколько строк, получите синтаксическую ошибку - такой код не скомпилится.
Автор: dmit000
Дата сообщения: 14.09.2006 05:19
спасибо за ответы
Автор: pit23
Дата сообщения: 14.09.2006 09:21
Можно ли загрузить в DBComboBox расположеный на CtrlGrid - е данные из трех полей таблицы ADOTable, т.е. при открытии в нем выпадал список со строками вида:
500 - Лом ст. тяжелый - Негаб
При выборе такой строки 500 должно сесть в одно поле таблицы, Лом ст. тяжелый во второе, а Негаб -- в третье.

Можно как то обойтись без вычисляемого поля, т.к. при подключении DBComboBox-са к вычисляемому полю (в событии OnCalcFields просто конкантенирую значение трех полей) и загрузки в DBComboBox (например в событии формы OnShow) всех значений этого вычисляемого поля, почему то невозможно выбирать значения из списка (т.е. на каждой строке CtrlGrid-а в DBComboBox-са висят скрепленные значения трех полей соответствующие текущей позиции в БД и при выборе другого значения из DBComboBox-са значение не меняется)
Автор: NewbieCnt
Дата сообщения: 14.09.2006 09:36
А как можно узнать кодировку строки?
Автор: ArtemiyUO
Дата сообщения: 14.09.2006 10:39
pit23
Devexpress DBComboBox позволяет это сделать.
Автор: OdesitVadim
Дата сообщения: 14.09.2006 10:45
Если строка достаточно длиная, то статистическим анализом. Если короткая - то сделать это сложновато.
В чём суть анализа? Считаеш, как часто (в процентах) встречаются различные символы в твоей строке, а потом сравниваеш это с готовыми данными. Эти таблицы можно найти в сети (поиск по словам распределение вероятность символов) Например для украинского и русского языка наиболее часто употредляется буква "о". В англ - E
Автор: pit23
Дата сообщения: 14.09.2006 10:51
ArtemiyUO


Цитата:
Devexpress DBComboBox


Что это за вещь. Забыл сказать: Я использую Delphi6.
Автор: RedPromo
Дата сообщения: 14.09.2006 10:54
NewbieCnt
Попробовать угадать.
Есть алгоритм, тоесть строится матрица для разных кодировок если код символа для кодовой стрницы является символом тогда возможно ты угадал, можно просматривать несколько символов для болие лучшего угадывания.
Автор: NewbieCnt
Дата сообщения: 14.09.2006 11:23
А стандартных функций разве нету?
Жаль.. Как тогда страничку загружать незнаю.
Автор: Vetal303
Дата сообщения: 14.09.2006 11:40
NewbieCnt

Цитата:
Жаль.. Как тогда страничку загружать незнаю.

А куда Вы собрались ее загружать?
У ТWebBrowser'а я не помню проблем с определением кодировки.
Автор: wader
Дата сообщения: 14.09.2006 11:44
NewbieCnt
Стандартных нет

А как связаны загрузка страницы и кодировка этой страницы?

здесь очень подробно все расписано, наслаждайся
hxxp://www.mozilla.org/projects/intl/UniversalCharsetDetection.html
Автор: ArtemiyUO
Дата сообщения: 14.09.2006 13:56
pit23
DevExpress это мегонабор контролов для Дельфи и билдера
http://devexpress.com/Products/VCL/Index.xml
Мего возможности. Платные.
Автор: xitsmex
Дата сообщения: 16.09.2006 11:03
Итак, есть вопросы по стандартным багам VCL и их решениям. Покопался в инете - не отыскал.
1. Описание: TScrollBox, контрол внутри него. Некорректное скроллирование при переходе фокуса на внутренний контрол TScrollBox`a.
Детали: Если в TScrollBox есть большой контрол, прокручиваем его куда хотим (фокус на него не ставим, только полосками прокрутки!). Затем ставим фокус на внутренний контрол (кликаем по нему) - ScrollBox прокрутится к самому началу.
Пример: На фому TScrollBox, в него - TStringGrid БЕЗ собственных полос прокрутки, но по размеру больше, чем TScrollBox. Еще на форму TEdit - для масовки. Кликаем в Edit, прокручиваем полосы в ScrollBox в правый нижний угол, кликаем на угловой ячейке - вуаля, ScrollBox прокручивается на (0,0) и выделяет на часть таблицы.
2. Описание: TListView продолжает процесс выделения, если был exception (messagebox) после события WM_LBUTTON_DOWN.
Детали: Если при нажатии левой кнопкой мыши из-за потери фокуса другим контролом нпоявится message box (например, вследствие exception), то после закрытия messagebox будет наблюдаться выделение в ListView.
Пример: На форму TListView с MultiSelect = true и Edit (снова масовка), у Edit:
procedure TfmDemo.Edit1Exit(Sender: TObject);
begin
if TEdit(Sender).Text = '1' then
raise Exception.Create('!!!');
end;
Вводим в Edit '1', нажимаем на ListView - exception. Жмем Ok - вуаля, в ListView бегают полосы выделения.
Автор: YuRRiX
Дата сообщения: 16.09.2006 11:37
Кто нить писал проги для WM PPC под Delphi?
вроде нашел статью ( http://bdn.borland.com/article/33507 ) но вопросы она до конца не сняла, ибо часть софта скачать не получается...
Автор: GTA3
Дата сообщения: 16.09.2006 12:16
компонент ComboBox1 есть у него свойство items в нем хранятся строки
как сделать что бы определенной строке из этого компонета присваивалось определенное цифровое значение 01, 02 итд
Автор: afiget
Дата сообщения: 16.09.2006 12:31
GTA3
Копай в сторону TStrings.Objects

Добавлено:
Ну или альтернативные компонеты (например, DevExpress)
Автор: Vetal303
Дата сообщения: 16.09.2006 12:35
GTA3
если имеется ввиду обратится к конкретному итемсу и сменить ему отображаемое название:
ComboBox1.Items[i]:='01'
где i - порядковый номер итемса, счет ведётся с нулевого.

Если я понял вопрос неправильно - перефразируйте!

Добавлено:
GTA3
Видишь твой вопрос можно понять далеко неоднозначно!

ЗЫ Учимся задавать вопросы
Автор: GTA3
Дата сообщения: 16.09.2006 12:46
Vetal303
имеется ввиду вот что

в итемсе есть строки:
Пример
Москва
астрахань
рязань

надо как то присвоить нумерацию этим городам так:
Москва 01
астрахань 02
Рязань 03...

так что бы когда я выбирал москву в компонете ComboBox1 город
в компоненте "мемо" вставлялся не сам город а его номер
Автор: Ramazan
Дата сообщения: 16.09.2006 12:51
GTA3
. . .
ComboBox1.Items.AddObject('Москва', TObject(01));
ComboBox1.Items.AddObject('Астрахань', TObject(02));
ComboBox1.Items.AddObject('Рязань', TObject(03));
. . .

В обработчике OnClick для TComboBox1:
Memo1.Lines.Text := Format('%d', [Integer(ComboBox1.Items.Objects[ComboBox1.ItemIndex])]);
Автор: GTA3
Дата сообщения: 16.09.2006 13:09
Ramazan
нет так не получается какой бы город не выбирал в компоненте мемо выходит ноль
Автор: Ramazan
Дата сообщения: 16.09.2006 13:24
GTA3
Странно, только что проверил в Delphi 7 - работает.
[more=Текст модуля]
unit Unit1;

interface

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

type
TForm1 = class(TForm)
ComboBox1: TComboBox;
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
procedure ComboBox1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
ComboBox1.Items.AddObject('Москва', TObject(01));
ComboBox1.Items.AddObject('Астрахань', TObject(02));
ComboBox1.Items.AddObject('Рязань', TObject(03));
end;

procedure TForm1.ComboBox1Click(Sender: TObject);
begin
Memo1.Lines.Text := Format('%d', [Integer(ComboBox1.Items.Objects[ComboBox1.ItemIndex])]);
end;

end.
[/more]
[more=Форма]
object Form1: TForm1
Left = 2
Top = 133
Width = 870
Height = 640
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 ComboBox1: TComboBox
Left = 28
Top = 44
Width = 145
Height = 21
ItemHeight = 13
TabOrder = 0
Text = 'ComboBox1'
OnClick = ComboBox1Click
end
object Memo1: TMemo
Left = 260
Top = 44
Width = 185
Height = 89
Lines.Strings = (
'Memo1')
TabOrder = 1
end
end
[/more]
Автор: GTA3
Дата сообщения: 16.09.2006 13:25
Ramazan
извиняюсь выходит не ноль а цифры
1
2
3
без нуля (01) надо что бы снулем

и еще в компоненте ComboBox1 каждый раз прибавляются города
Автор: Ramazan
Дата сообщения: 16.09.2006 13:41
GTA3
А если так:
var
Value: Integer;
. . .
Value := Integer(ComboBox1.Items.Objects[ComboBox1.ItemIndex]);
if Value < 10 then
Memo.Lines.Text := '0' + IntToStr(Value)
else
Memo.Lines.Text := IntToStr(Value);

Список городов можно хранить, скажем в ini-файле, тогда можно будет выводить номера городов в произвольном виде (как задашь в файле).
Автор: GTA3
Дата сообщения: 16.09.2006 14:40
unit Unit1;

interface

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

type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
ComboBox1: TComboBox;
procedure ComboBox1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ComboBox1Change(Sender: TObject);

var
Value: Integer;
begin
Value := Integer(ComboBox1.Items.Objects[ComboBox1.ItemIndex]);
if Value < 10 then
Memo1.Lines.Text := '0' + IntToStr(Value)
else
Memo1.Lines.Text := IntToStr(Value);
end;

end.


Добавлено:
нет так не идет выходит 00


Добавлено:
Ramazan
нет так тоже не идет выходит 00
Автор: MoonFox
Дата сообщения: 16.09.2006 15:02

Цитата:
ComboBox1.Items.AddObject('Москва', TObject(01));
ComboBox1.Items.AddObject('Астрахань', TObject(02));
ComboBox1.Items.AddObject('Рязань', TObject(03));
. . .

В обработчике OnClick для TComboBox1:
Memo1.Lines.Text := Format('%d', [Integer(ComboBox1.Items.Objects[ComboBox1.ItemIndex])]);

Ведь писал же Ramazan, только аргумент в функции Format заменить на '%0.2d'.
Если строки в TStrings вставлять в дизайн-тайме или через метод Add, а не AddObject, то, естественно, все связанные Objects будут равны nil (0 при приведении к целому).
Поэтому в коде примера, который
Цитата:
нет так тоже не идет выходит 00
, надо добавить метод OnCreate на форму, а в нем заполнить ComboBox методом, который указал выше Ramazan.

Автор: Ramazan
Дата сообщения: 16.09.2006 15:07
GTA3

Цитата:
Value := Integer(ComboBox1.Items.Objects[ComboBox1.ItemIndex]);
if Value < 10 then
Memo1.Lines.Text := '0' + IntToStr(Value)
else
Memo1.Lines.Text := IntToStr(Value);

Этот код должен быть в обработчике OnClick, а не OnChange. Кроме того, нет кода, заполняющего ComboBox1 - см. мой пример, метод FormCreate

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Событие STFilter(DBGridEh) ???


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.