Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
15 / 15 / 5
Регистрация: 19.10.2009
Сообщений: 187

SDI + StatusBar

29.04.2010, 00:38. Показов 2175. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как сделать чтобы в StatusBar постоянно отображалось количество строк Memo?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.04.2010, 00:38
Ответы с готовыми решениями:

SDI многооконное приложение
Где можно найти исходник пример программы содержащей несколько взаимодействующих форм. Или как избавиться от самозакрытия "не...

StatusBar
Как сдесь StatusBAr запрограмировать что виполнял свои функции?

StatusBar и путь к БД
Хочу вывести в StatusBar путь подключённой БД то есть должно выглядеть так C:\MyBD.mdb Как это сделать?

9
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
29.04.2010, 00:42
Каждый раз при изменении количества строк, записывать его в строку состояния.
0
15 / 15 / 5
Регистрация: 19.10.2009
Сообщений: 187
29.04.2010, 00:48  [ТС]
Ну это понятно. Каким образом это реализовать и где там что писать? А то я не въезжаю как тут работает обработчик событий. У меня есть функция
C++
1
2
3
4
void __fastcall TSDIAppForm::MemoChange(TComponent *AOwner)
{
     StatusBar->SimpleText = "count: "+IntToStr(Memo->Lines->Count);
}
Где ее нужно вызвать?Или как это вобще работает не понимаю
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
29.04.2010, 00:59
Цитата Сообщение от Metal_666_ Посмотреть сообщение
Где ее нужно вызвать?
Вызывать ее не нужно. Она будет вызываться автоматически.
Цитата Сообщение от Metal_666_ Посмотреть сообщение
Или как это вобще работает не понимаю
При изменении содержания поля функция обработчик будет вызваться автоматически. Т.е. при возникновении события MemoChange программа автоматически вызовет соответствующую функцию обработки.
0
15 / 15 / 5
Регистрация: 19.10.2009
Сообщений: 187
29.04.2010, 01:07  [ТС]
Чет не работатет. Вот мой код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
// .cpp
/---------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
 
#include "SDIMain.h"
#include "About.h"
//---------------------------------------------------------------------
#pragma resource "*.dfm"
TSDIAppForm *SDIAppForm;
 
 
 
 
//---------------------------------------------------------------------
__fastcall TSDIAppForm::TSDIAppForm(TComponent *AOwner)
    : TForm(AOwner)
{
    SaveDialog->DefaultExt="txt";
    SaveDialog->Filter = "Текстовые файлы (*.txt)\0*.txt\0";
    OpenDialog->DefaultExt="txt";
    OpenDialog->Filter = "Текстовые файлы (*.txt)\0*.txt\0";
    Memo->Clear();
    AnsiString as = IntToStr(Memo->Lines->Count);
 
    StatusBar->SimpleText = "Count: "+IntToStr(Memo->Lines->Count);
 
}
//---------------------------------------------------------------------
 
void __fastcall TSDIAppForm::FileNew1Execute(TObject *Sender)
{
 
        if(Memo->Modified == true)
        {       int f = MessageBox(NULL,"Файл был изменен. Сохранить?","Сохранение",MB_YESNO);
                if(f == IDYES)
                {
                    SaveDialog->Execute();
                }
                Memo->Clear();
        }
        else
        Memo->Lines->Clear();
        StatusBar->SimpleText = "Count: "+IntToStr(Memo->Lines->Count);
 
}
//---------------------------------------------------------------------------
 
void __fastcall TSDIAppForm::FileOpen1Execute(TObject *Sender)
{
    if(Memo->Modified == true)
        {       int f = MessageBox(NULL,"Файл был изменен. Сохранить?","Сохранение",MB_YESNO);
                if(f == IDYES)
                {
                    if(SaveDialog->Execute())
                        Memo->Lines->SaveToFile(SaveDialog->FileName);
                }
                Memo->Clear();
        }
    if(OpenDialog->Execute())
        Memo->Lines->LoadFromFile(OpenDialog->FileName);
    StatusBar->SimpleText = "Count: "+IntToStr(Memo->Lines->Count);
}
//---------------------------------------------------------------------------
 
void __fastcall TSDIAppForm::FileSave1Execute(TObject *Sender)
{
    if(SaveDialog->Execute())
        Memo->Lines->SaveToFile(SaveDialog->FileName);
    StatusBar->SimpleText = "Count: "+IntToStr(Memo->Lines->Count);
 
}
//---------------------------------------------------------------------------
 
 
void __fastcall TSDIAppForm::FileExit1Execute(TObject *Sender)
{
  Close();
}
//---------------------------------------------------------------------------
 
void __fastcall TSDIAppForm::HelpAbout1Execute(TObject *Sender)
{
  AboutBox->ShowModal();
 
}
//---------------------------------------------------------------------------
 
 
 
void __fastcall TSDIAppForm::Label1Click(TObject *Sender)
{
    StatusBar->SimpleText = "Count: "+IntToStr(Memo->Lines->Count);
 
}
//---------------------------------------------------------------------------
 
void __fastcall TSDIAppForm::MemoChange(TComponent *AOwner)
{
     StatusBar->SimpleText = "count: "+IntToStr(Memo->Lines->Count);
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
//.h
//----------------------------------------------------------------------------
#ifndef SDIMainH
#define SDIMainH
//----------------------------------------------------------------------------
#include <vcl\ComCtrls.hpp>
#include <vcl\ExtCtrls.hpp>
#include <vcl\Buttons.hpp>
#include <vcl\StdCtrls.hpp>
#include <vcl\Dialogs.hpp>
#include <vcl\Menus.hpp>
#include <vcl\Controls.hpp>
#include <vcl\Forms.hpp>
#include <vcl\Graphics.hpp>
#include <vcl\Classes.hpp>
#include <vcl\Windows.hpp>
#include <vcl\System.hpp>
#include <ActnList.hpp>
#include <ImgList.hpp>
#include <StdActns.hpp>
#include <ToolWin.hpp>
//----------------------------------------------------------------------------
class TSDIAppForm : public TForm
{
__published:
    TOpenDialog *OpenDialog;
    TSaveDialog *SaveDialog;
    TToolBar *ToolBar1;
    TToolButton *ToolButton9;
    TToolButton *ToolButton1;
    TToolButton *ToolButton2;
    TToolButton *ToolButton3;
    TToolButton *ToolButton4;
    TToolButton *ToolButton5;
    TToolButton *ToolButton6;
    TActionList *ActionList1;
    TAction *FileNew1;
    TAction *FileOpen1;
    TAction *FileSave1;
    TAction *FileSaveAs1;
    TAction *FileExit1;
    TEditCut *EditCut1;
    TEditCopy *EditCopy1;
    TEditPaste *EditPaste1;
    TAction *HelpAbout1;
    TStatusBar *StatusBar;
    TImageList *ImageList1;
    TMainMenu *MainMenu1;
    TMenuItem *File1;
    TMenuItem *FileNewItem;
    TMenuItem *FileOpenItem;
    TMenuItem *FileSaveItem;
    TMenuItem *FileSaveAsItem;
    TMenuItem *N1;
    TMenuItem *FileExitItem;
    TMenuItem *Edit1;
    TMenuItem *CutItem;
    TMenuItem *CopyItem;
    TMenuItem *PasteItem;
    TMenuItem *Help1;
    TMenuItem *HelpAboutItem;
    TMemo *Memo;void __fastcall FileNew1Execute(TObject *Sender);
        void __fastcall FileOpen1Execute(TObject *Sender);
        void __fastcall FileSave1Execute(TObject *Sender);
        void __fastcall FileExit1Execute(TObject *Sender);
        void __fastcall HelpAbout1Execute(TObject *Sender);
    void __fastcall Label1Click(TObject *Sender);
    void __fastcall MemoChange(TComponent *AOwner);
 
private:
public:
    virtual __fastcall TSDIAppForm(TComponent *AOwner);
 
};
//----------------------------------------------------------------------------
extern TSDIAppForm *SDIAppForm;
//----------------------------------------------------------------------------
#endif
Где тут не так?
0
 Аватар для mirso
562 / 373 / 55
Регистрация: 05.04.2009
Сообщений: 767
29.04.2010, 01:54
Metal_666_,
как ты вот это событие создавал?

void __fastcall MemoChange(TObject *Sender);
----------------------------------------------------
у тебя оно
void __fastcall MemoChange(TComponent *AOwner);
1
15 / 15 / 5
Регистрация: 19.10.2009
Сообщений: 187
29.04.2010, 01:59  [ТС]
Честно говоря вручную прописал))
Прописывал так
void __fastcall MemoChange(TComponent *AOwner);
но результатов не дало.
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
29.04.2010, 02:02
Цитата Сообщение от Metal_666_ Посмотреть сообщение
Честно говоря вручную прописал))
Это надо было сделать через конструктор. У Memo на вкладке Events должно быть соответствующее событие.
1
15 / 15 / 5
Регистрация: 19.10.2009
Сообщений: 187
29.04.2010, 02:05  [ТС]
Все,разобрался,там в инспекторе объектов на вкладке events -> onchange нужно было функцию выбрать соответствующую. Спасибо всем.
0
 Аватар для mirso
562 / 373 / 55
Регистрация: 05.04.2009
Сообщений: 767
29.04.2010, 02:06
Можно так:
1)на вкладке Standard - нажимаешь мышкой на компонент Memo
2)Второй раз - клик мышкой на форме
3)Третий раз - двойной щелчек на Memo
И вписываешь код
C++
1
2
3
4
5
6
7
//---------------------------------------------------------------------------
 
void __fastcall TSDIAppForm::MemoChange(TObject *Sender)
{
     StatusBar->SimpleText = "count: "+IntToStr(Memo->Lines->Count);
}
//---------------------------------------------------------------------------
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.04.2010, 02:06
Помогаю со студенческими работами здесь

StatusBar + Anchors
Доброго дня.Ребят, как сделать что бы при разворачивании программы на весь экран последний элемент StatusBar1 Перемещался в право ? ...

Рисование в StatusBar
Ребята подскажите по такому вопросу? Мне нужно нарисовать текст и заобно определить его длину и поставить согласно этой длине бордюр, чтобы...

Dbgrid и statusbar
Здравствуйте! Имеется DBGrid и Statusbar. В статусбаре должна отображаться расшифровка заголовков столбцов дбгрида, т.е. я нажимаю на...

Работа со Statusbar
Подскажите пожалуйста, как мне растянуть статус бар вот на картинке выбелено красным

StatusBar с гиперсылками
Доброй ночи, подскажите как реализовать ? - StatusBar с гиперсылками


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru