Eseményvezérelt alkalmazások fejlesztése I 11. előadás. Adatkezelés speciális eszközökkel. Giachetta Roberto
|
|
- Mária Molnárné
- 6 évvel ezelőtt
- Látták:
Átírás
1 Eötvös Loránd Tudományegyetem Informatikai Kar Eseményvezérelt alkalmazások fejlesztése I 11. előadás Adatkezelés speciális eszközökkel Giachetta Roberto
2 Az adatkezelés lehetőségei Adatbázis tartalom alkalmazáson keresztüli kezelése számos problémát felvet, amit figyelembe kell vennünk, pl.: adatok helyességének ellenőrzése (pl. tartomány, formátum) adatok meglétének ellenőrzése (kötelezően kitöltendő mezők esetén), esetleges kitöltése alapértelmezett értékkel speciális adatmegjelenítés (pl. mértékegységek) kapcsolt táblák adatainak együttes, vagy külön kezelése, szerkesztése adatbázisban indirekt tárolt adatok megjelenítése (pl. aggregált információk kapcsolt táblából), esetlegesen szerkesztése ELTE IK, Eseményvezérelt alkalmazások fejlesztése I 11:2
3 Változások követése Az adatmodellek lehetőségek adnak az adatokban, illetve a szerkezetben történt változások követésére, amelyeket felhasználhatunk ellenőrzések, vagy automatikus kitöltések végrehajtására, pl.: kezelhetjük adatok változását közvetlenül a változást követően a datachanged(<tartomány bal felső indexe>, <jobb alsó indexe>) eseménnyel kezelhetjük a sorok (rekordok) változását az adatbázisba történő mentéskor (submit() és submitall() lefutásakor) a beforeinsert(<rekord>), beforedelete(<sorszám>) és beforeupdate(<sorszám>, <rekord>) eseményekkel ELTE IK, Eseményvezérelt alkalmazások fejlesztése I 11:3
4 Változások követése A változáskövetést célszerű manuális szerkesztési stratégiával használni, mivel így a változtatások visszavonhatóak (revertall()) mentés előtt Pl.: model_datachanged(const QModelIndex topleft, ) { if (topleft.column() == 3 && model.value(topleft).isnull()) // ha a 3-as oszlopban vagyunk, és // elfelejtettük kitölteni model.setdata(topleft, 0); // utólag kitölthetjük 0-ra } ELTE IK, Eseményvezérelt alkalmazások fejlesztése I 11:4
5 Feladat: Módosítsuk az épületek szerkesztését úgy, hogy ellenőrizze a tengerpart távolság értékét (csak pozitív szám lehet), és mentéskor minden új sorhoz szúrja be az új hirdetés megjegyzést. Ezen felül lehessen a városokat is hozzáadni, törölni (feltéve, hogy a városban nincs épület). az ellenőrzést és az automatikus beírást a modell beforeinsert és DataChanged eseményeivel kezeljük a városokat külön dialógusablakban (CityEditorDialog) szerkeszthetjük (mivel csak a nevüket kell, elég egy ListView nézet) úgy, hogy a modellt az épületek modell relációjából olvassuk ki (relationmodel(2)) az épület azonosítóját rejtsük el (úgyis generálódik) ELTE IK, Eseményvezérelt alkalmazások fejlesztése I 11:5
6 Tervezés (adatbázis): ELTE IK, Eseményvezérelt alkalmazások fejlesztése I 11:6
7 Tervezés (alkalmazás): BuildingTableDialog - _addbutton :QPushButton* - _buttonbox :QDialogButtonBox* - _citytabledialog :CityTableDialog* - _model :QSqlRelationalTableModel* - _removebutton :QPushButton* - _revertbutton :QPushButton* - _submitbutton :QPushButton* - _tableview :QTableView* + BuildingTableDialog(QWidget*) + ~BuildingTableDialog() - setupmodel() :void - setupui() :void QDialog «slot» - addbutton_clicked() :void - model_beforeinsert(qsqlrecord&) :void - model_datachanged(qmodelindex&, QModelIndex&) :void - removebutton_clicked() :void - submitbutton_clicked() :void - tableview_doubleclicked(qmodelindex) :void -_citytabledialog CityEditorDialog QDialog - _listview :QListView* - _model :QSqlTableModel* - _buttonbox :QDialogButtonBox* - _addbutton :QPushButton* - _removebutton :QPushButton* + CityEditorDialog(QWidget*) + ~CityEditorDialog() + setmodel(qsqltablemodel*) :void - setupmodel() :void - setupui() :void «slot» - addbutton_clicked() :void - removebutton_clicked() :void ELTE IK, Eseményvezérelt alkalmazások fejlesztése I 11:7
8 Megvalósítás (buildingeditordialog.cpp): connect(_model, SIGNAL(beforeInsert(QSqlRecord&)), this, SLOT(model_BeforeInsert(QSqlRecord&))); // beszúrás előtti esemény társítása connect(_model, SIGNAL(beforeUpdate(int, QSqlRecord&)), this, SLOT(model_BeforeUpdate(int, QSqlRecord&))); // adatváltoztatás esemény társítása tableview->setcolumnhidden(0, true); // első oszlop elrejtése ELTE IK, Eseményvezérelt alkalmazások fejlesztése I 11:8
9 Megvalósítás (buildingeditordialog.cpp): void BuildingEditorDialog:: model_beforeinsert(qsqlrecord& record){ if (record.value("comment").isnull()) // ha a komment oszlop üres record.setvalue("comment", trutf8("új hirdetés")); } void BuildingEditorDialog:: tableview_doubleclicked(qmodelindex index){ if (index.isvalid() && index.column() == 2) _cityeditordialog->show(); // megjelenítjük a városszerkesztőt } ELTE IK, Eseményvezérelt alkalmazások fejlesztése I 11:9
10 Speciális adatmegjelenítés A modell és a megjelenítő közötti kapcsolatot a delegált (QAbstractItemDelegate leszármazott) osztályok biztosítják, amelyek szabályozzák a megjelenítés módját az alap megjelenítést a QItemDelegate, a relációk kezelését a QSqlRelationalDelegate, egyedi megjelenítést pedig a QStyledItemDelegate szolgáltatja QAbstractItemDelegate QItemDelegate QStyledItemDelegate QSqlRelationalDelegate ELTE IK, Eseményvezérelt alkalmazások fejlesztése I 11:10
11 Egyedi delegáltak létrehozása Lehetőségünk van bármely osztályból történő származtatással további speciális megjelenítési módok definiálásra a delegált paint( ) művelete szolgál a kirajzolás végrehajtására, ezt kell felüldefiniálnunk paraméterben megkapja a kirajzoló objektumot (QPainter), a kirajzolási stílust (QStyleOptionViewItem), valamint a kirajzolandó adatot (QModelIndex) a stílusban megfogalmazhatunk különböző módokat (tagolás, igazítás), illetve méretet a paint műveletben a drawdisplay művelettel tudjuk a felületet rajzolni, a drawfocus művelettel pedig rárajzolni a fókuszt ELTE IK, Eseményvezérelt alkalmazások fejlesztése I 11:11
12 Egyedi delegáltak létrehozása Pl.: class MyDelegate : public QItemDelegate { void paint(qpainter *painter,, const QModelIndex &index) const { if (index.column() == 2) // kettes oszlopra { // speciális rajzolást végzünk drawdisplay( ); // adat kirajzolása drawfocus( ); // fókusz kirajzolása } else { // a többire az alapértelmezettet QItemDelegate::paint( ); } ELTE IK, Eseményvezérelt alkalmazások fejlesztése I 11:12
13 Feladat: Módosítsuk az épületek kezelését úgy, hogy a tengerpart távolságnál a szám után a mértékegységet (méter) is odaírjuk, illetve jelenítsük meg a jellemzőket szám helyett szövegesen ehhez egy egyedi delegált osztályt (BuildingDelegate) származtatunk a QSqlRelationalDelegate-ből, és felüldefiniáljuk a paint műveletet a távolságnak csak hozzá kell vennünk az m szöveget a számhoz, illetve 1 esetén azt írjuk ki, hogy közvetlen a jellemzőknél a számérték alapján fűzzük össze a megjelenítendő szöveget (ehhez bitenként kell feldolgoznunk a számot) ELTE IK, Eseményvezérelt alkalmazások fejlesztése I 11:13
14 Tervezés: BuildingDelegate QSqlRelationalDelegate + BuildingDelegate(QObject*) + paint(qpainter*, QStyleOptionViewItem&, QModelIndex&) :void {query} - valuetofeatures(int) :QString {query} BuildingEditorDialog - _tableview :QTableView* - _model :QSqlRelationalTableModel* - _buttonbox :QDialogButtonBox* - _addbutton :QPushButton* - _removebutton :QPushButton* - _submitbutton :QPushButton* - _revertbutton :QPushButton* - _cityeditordialog :CityEditorDialog* + BuildingEditorDialog(QWidget*) + ~BuildingEditorDialog() - setupmodel() :void - setupui() :void QDialog «slot» - addbutton_clicked() :void - model_beforeinsert(qsqlrecord&) :void - model_datachanged(qmodelindex&, QModelIndex&) :void - removebutton_clicked() :void - submitbutton_clicked() :void - tableview_doubleclicked(qmodelindex) :void -_cityeditordialog CityEditorDialog QDialog - _listview :QListView* - _model :QSqlTableModel* - _buttonbox :QDialogButtonBox* - _addbutton :QPushButton* - _removebutton :QPushButton* + CityEditorDialog(QWidget*) + ~CityEditorDialog() + setmodel(qsqltablemodel*) :void - setupmodel() :void - setupui() :void «slot» - addbutton_clicked() :void - removebutton_clicked() :void ELTE IK, Eseményvezérelt alkalmazások fejlesztése I 11:14
15 Megoldás (buildingdelegate.cpp): void BuildingDelegate::paint( QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const { switch (index.column()) { case 4: // tengerpart távolság oszlop QString text; int shoredistance = index.data().toint(); // adat lekérdezése if (shoredistance == 1) text = "közvetlen"; else text = QString::number(shoreDistance) + " m"; ELTE IK, Eseményvezérelt alkalmazások fejlesztése I 11:15
16 Megoldás (buildingdelegate.cpp): QStyleOptionViewItem optionviewitem = option; // kiírás módjának beállítása optionviewitem.displayalignment = Qt::AlignRight Qt::AlignVCenter; // jobbra és középre tagolt drawdisplay(painter, optionviewitem, optionviewitem.rect, text); // adat kirajzolása drawfocus(painter, optionviewitem, optionviewitem.rect); // fókusz kirajzolása break; ELTE IK, Eseményvezérelt alkalmazások fejlesztése I 11:16
17 Megoldás (buildingdelegate.cpp): default: // alapértelmezett rajzolás QItemDelegate::paint(painter, option, index); break; QString BuildingDelegate::valueToFeatures(int value) const { QString result; if (value % 2 == 1) result += trutf8("főút, "); if ((value >> 1) % 2 == 1) result += trutf8("parti szolgálat, "); ELTE IK, Eseményvezérelt alkalmazások fejlesztése I 11:17
18 Egyedi szerkesztőmezők Az egyedi delegált segítségével nem csak a kiírást, de a szerkesztés módját is változtathatjuk az alapértelmezett szerkesztőmezőt tetszőlegesre cserélhetjük a createeditor( ) művelet felelős a szerkesztőmező létrehozásáért, ebben visszaadhatunk egy tetszőleges QWidget leszármazottat, vagyis bármilyen vezérlőt behelyezhetünk szerkesztőnek a seteditordata( ) felelős a szerkesztőmező kitöltéséért, hogy az megfeleljen a modellbeli adatnak a setmodeldata( ) felelős a szerkesztőmezőben történt módosítás visszaírásáért a modellbe ELTE IK, Eseményvezérelt alkalmazások fejlesztése I 11:18
19 Feladat: Módosítsuk az épületek kezelését úgy, hogy a tengerpart típust egy legördülő menü segítségével lehessen kijelölni. tengerpart típusok: homokos (0), sziklás (1), kavicsos (2), apró kavicsos (3) módosítjuk a BuildingDelegate osztályt az egyedi vezérlővel, amely QComboBox típusú lesz, ennek elemeit egy konstans lista (shorelist) segítségével töltjük fel, amely tartalmazza a parttípusokat a listában az index segítségével állítjuk a parttípust, így könnyen számolható a legördülő menüben kiválasztott elem (a currentindex segítségével), valamint az adatbázisban visszaírandó érték is ELTE IK, Eseményvezérelt alkalmazások fejlesztése I 11:19
20 Tervezés: BuildingDelegate QSqlRelationalDelegate + BuildingDelegate(QObject*) + paint(qpainter*, QStyleOptionViewItem&, QModelIndex&) :void {query} + createeditor(qwidget*, QStyleOptionViewItem&, QModelIndex&) :QWidget * {query} + seteditordata(qwidget*, QModelIndex&) :void {query} + setmodeldata(qwidget*, QAbstractItemModel*, QModelIndex&) :void {query} - shorelist() :QStringList {query} - valuetofeatures(int) :QString {query} BuildingEditorDialog - _tableview :QTableView* - _model :QSqlRelationalTableModel* - _buttonbox :QDialogButtonBox* - _addbutton :QPushButton* - _removebutton :QPushButton* - _submitbutton :QPushButton* - _revertbutton :QPushButton* - _cityeditordialog :CityEditorDialog* QDialog -_cityeditordialog CityEditorDialog QDialog - _listview :QListView* - _model :QSqlTableModel* - _buttonbox :QDialogButtonBox* - _addbutton :QPushButton* - _removebutton :QPushButton* + BuildingEditorDialog(QWidget*) + ~BuildingEditorDialog() + addbutton_clicked() :void + removebutton_clicked() :void + submitbutton_clicked() :void + tableview_doubleclicked(qmodelindex) :void + model_beforeinsert(qsqlrecord&) :void + model_datachanged(qmodelindex&, QModelIndex&) :void - setupmodel() :void - setupui() :void + CityEditorDialog(QWidget*) + ~CityEditorDialog() + setmodel(qsqltablemodel*) :void + addbutton_clicked() :void + removebutton_clicked() :void - setupmodel() :void - setupui() :void ELTE IK, Eseményvezérelt alkalmazások fejlesztése I 11:20
21 Megoldás (buildingdelegate.cpp): QWidget* BuildingDelegate::createEditor( Qwidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const { if (index.column() == 5) { // a tengerpart oszlopnál legördülő menü QComboBox *shorecombobox = new QComboBox(parent); shorecombobox->additems(shorelist()); // felvesszük a lista által tartalmazott // elemeket return shorecombobox; ELTE IK, Eseményvezérelt alkalmazások fejlesztése I 11:21
22 Megoldás (buildingdelegate.cpp): void BuildingDelegate::setEditorData(Qwidget *editor, const QModelIndex &index) const { if (index.column() == 5) { int i = index.data().toint(); QComboBox *shorecombobox = qobject_cast<qcombobox*>(editor); // konverzió szükséges shorecombobox->setcurrentindex(i); // szerkesztőmező elemének beállítása } ELTE IK, Eseményvezérelt alkalmazások fejlesztése I 11:22
23 Feladat: Javítsunk a épületek jellemzőinek módosításán úgy, hogy ne egy számot kelljen beírni, hanem egy listából lehessen kiválasztani az érvényes jellemzőket. a jellemzők bináris formában tárolják az épület tulajdonságait (kert, parkoló, ) annak érdekében, hogy a későbbiekben könnyen fel tudjunk venni új tulajdonságokat a táblaszerkezet módosítása nélkül pl.: parti szolgálat kert 9 = főút úszómedence saját parkoló ELTE IK, Eseményvezérelt alkalmazások fejlesztése I 11:23
24 Tervezés: mivel az adatbázisban továbbra is a szám lesz eltárolva, szükségünk lesz egy egyedi lista vezérlőre (FeatureEditorListWidget), amely a szám-szöveg konverziót (setfeatures, getfeatures), illetve a szöveges formában történő kiírást (getfeaturesstring) elvégzi, és listaszerűen jeleníti meg az adatokat ehhez a QListWidget vezérlőből származtatunk, amelyben lehetőség van az elemek kijelölésére, így közvetlenül tárolhatjuk a jellemzők állapotát az egyedi vezérlőnket a delegált (BuildingDelegate) segítségéhez helyezzük a szerkezetbe ELTE IK, Eseményvezérelt alkalmazások fejlesztése I 11:24
25 Tervezés: QListWidget FeatureEditorListWidget BuildingDelegate QSqlRelationalDelegate + FeatureEditorListWidget(QWidget*) + setfeatures(int) :void + getfeatures() :int {query} + getfeaturesstring() :QString {query} + BuildingDelegate(QObject*) + paint(qpainter*, QStyleOptionViewItem&, QModelIndex&) :void {query} + createeditor(qwidget*, QStyleOptionViewItem&, QModelIndex&) :QWidget * {query} + seteditordata(qwidget*, QModelIndex&) :void {query} + setmodeldata(qwidget*, QAbstractItemModel*, QModelIndex&) :void {query} - shorelist() :QStringList {query} BuildingEditorDialog - _tableview :QTableView* - _model :QSqlRelationalTableModel* - _buttonbox :QDialogButtonBox* - _addbutton :QPushButton* - _removebutton :QPushButton* - _submitbutton :QPushButton* - _revertbutton :QPushButton* - _cityeditordialog :CityEditorDialog* QDialog -_cityeditordialog CityEditorDialog QDialog - _listview :QListView* - _model :QSqlTableModel* - _buttonbox :QDialogButtonBox* - _addbutton :QPushButton* - _removebutton :QPushButton* + BuildingEditorDialog(QWidget*) + ~BuildingEditorDialog() + addbutton_clicked() :void + removebutton_clicked() :void + submitbutton_clicked() :void + tableview_doubleclicked(qmodelindex) :void + model_beforeinsert(qsqlrecord&) :void + model_datachanged(qmodelindex&, QModelIndex&) :void - setupmodel() :void - setupui() :void + CityEditorDialog(QWidget*) + ~CityEditorDialog() + setmodel(qsqltablemodel*) :void + addbutton_clicked() :void + removebutton_clicked() :void - setupmodel() :void - setupui() :void ELTE IK, Eseményvezérelt alkalmazások fejlesztése I 11:25
26 Megoldás (featureeditorlistwidget.cpp): void FeatureEditorListWidget::setFeatures(int features) { for (int i = 0; i < 5; i++){ if (((features >> i) % 2 == 1)) // kijelölés beállítása a bit értéke // szerint item(i)->setcheckstate(qt::checked); else item(i)->setcheckstate(qt::unchecked); } } ELTE IK, Eseményvezérelt alkalmazások fejlesztése I 11:26
27 Megoldás (featureeditorlistwidget.cpp): int FeatureEditorListWidget::getFeatures() const { int featuresint = 0; for (int i = 0; i < 5; i++) if (item(i)->checkstate() == Qt::Checked) featuresint += pow(2, i); // megfelelő hatványozás a beíráshoz return featuresint; } ELTE IK, Eseményvezérelt alkalmazások fejlesztése I 11:27
28 Számított adatok kezelése Lehetőségünk van a modellben a tényleges adatbázisbeli tartalom mellett, vagy helyett tetszőleges számított adat megjelenítésére ehhez egy új, speciális modellt kell származtatnunk, amelyben felüldefiniáljuk az adatlekérdezést végző data(<index>, <szerep>) metódust, amelyben a pozíció (index) alapján pontosan megállapíthatjuk a megjeleníteni kívánt adatot az oszlopok számát megadó columncount() metódust, ahol általában növeljük az értéket mindkét műveletben tovább hívhatjuk az ősbeli örökölt műveletet, így az eredeti viselkedést is visszakaphatjuk ELTE IK, Eseményvezérelt alkalmazások fejlesztése I 11:28
29 Számított adatok kezelése Pl.: class MyTableModel : public QSqlTableModel { Qvariant data(const QModelIndex&, int) const; int columncount() const; }; QVariant MyTableModel::data(const QModelIndex& index, int role) const { if (index.column() == 6) // ha a számított oszlopban vagyunk // kiszámítjuk az értéket else // különben az ősbeli értéket adjuk vissza return QSqlTableModel::data(index, role); } ELTE IK, Eseményvezérelt alkalmazások fejlesztése I 11:29
30 Számított adatok kezelése int MyTableModel::columnCount() const { return QSqlTableModel::columnCount() + 1; // egy oszloppal bővítettük a táblát } A data metódusban szerep (role) paraméter állapítja meg, milyen információ lekérdezése kapcsán hívták meg a műveletet, a leggyakoribb szerepek: Qt::DisplayRole: a modell által megjelenített érték (amelyet tovább változtathatunk a delegáltban) Qt::EditRole: a szerkesztett érték, amely általában megegyezik a megjelenítettel (meghatározott esetekben különbözhet, pl. relációk esetén) ELTE IK, Eseményvezérelt alkalmazások fejlesztése I 11:30
31 Számított adatok kezelése Qt::ToolTipRole: előugró üzenet Qt::CheckStateRole: az adott elem kijelölési állapota (lehet kijelölt, kijelöletlen), ennek használatával a cella alapértelmezetten kijelölő mezőként fog megjelenni a nézetben Qt::SizeHintRole: szabályozza a megjelenítendő cella méretét, egyedi szerkesztőmezők esetén módosítható Qt::TextAligmentRole: szövegigazítás az adathoz Qt::ForegroundRole, Qt::BackgroundRole, Qt::TextColorRole, : különböző megjelenítési beállítások, amelyek szabályozhatóak a modell szintjén, illetve a delegált szintjén is ELTE IK, Eseményvezérelt alkalmazások fejlesztése I 11:31
32 Számított adatok kezelése Pl.: QVariant MyTableModel::data( ) const { if (index.column() == 6){ switch (role){ case Qt::TestAlignmentRole: // igazítás return QVariant(Qt::AlignLeft Qt::AlignVCenter); case Qt::DisplayRole: case Qt::EditRole: // megjelenítendő adat return ; case Qt:ToolTipRole: // előugró üzenet return QVariant("You cannot modify this!"); ELTE IK, Eseményvezérelt alkalmazások fejlesztése I 11:32
33 Feladat: Egészítsük ki az épületek táblát három számított oszloppal, az épületben lévő apartmanok számával, valamint a minimális, és maximális árral. származtatunk a relációs modellből egy egyedi modellt (BuildingTableModel), amelyben felüldefiniáljuk az adatlekérdezést, az oszlopok számát, illetve az új sor beszúrását (az alapértelmezett érékek beszúrása végett) a három új értéket megfelelő lekérdezések segítségével hozzuk létre (pl. ár esetén a apartment és a price tábla alapján) a delegált osztályban az árak megjelenítését kiegészítjük a pénznem megjelölésével is ELTE IK, Eseményvezérelt alkalmazások fejlesztése I 11:33
34 Tervezés (adatbázis): ELTE IK, Eseményvezérelt alkalmazások fejlesztése I 11:34
35 Tervezés (alkalmazás): QSqlRelationalTableModel BuildingTableModel + BuildingTableModel(QObject*) + insertrow(int) :void + data(qmodelindex&, int) :QVariant {query} + columncount(qmodelindex&) :int {query} + onbeforeinsert(qsqlrecord&) :void + ondatachanged(qmodelindex&, QModelIndex&) :void -_model BuildingDelegate QSqlRelationalDelegate + BuildingDelegate(QObject*) + paint(qpainter*, QStyleOptionViewItem&, QModelIndex&) :void {query} + createeditor(qwidget*, QStyleOptionViewItem&, QModelIndex&) :QWidget * {query} + seteditordata(qwidget*, QModelIndex&) :void {query} + setmodeldata(qwidget*, QAbstractItemModel*, QModelIndex&) :void {query} - shorelist() :QStringList {query} BuildingEditorDialog - _tableview :QTableView* - _model :BuildingTableModel* - _buttonbox :QDialogButtonBox* - _addbutton :QPushButton* - _removebutton :QPushButton* - _submitbutton :QPushButton* - _revertbutton :QPushButton* - _cityeditordialog :CityEditorDialog* QDialog + BuildingEditorDialog(QWidget*) + ~BuildingEditorDialog() + addbutton_clicked() :void + removebutton_clicked() :void + submitbutton_clicked() :void + tableview_doubleclicked(qmodelindex) :void - setupui() :void -_cityeditordialog CityEditorDialog QDialog - _listview :QListView* - _model :QSqlTableModel* - _buttonbox :QDialogButtonBox* - _addbutton :QPushButton* - _removebutton :QPushButton* + CityEditorDialog(QWidget*) + ~CityEditorDialog() + setmodel(qsqltablemodel*) :void + addbutton_clicked() :void + removebutton_clicked() :void - setupmodel() :void - setupui() :void QListWidget FeatureEditorListWidget + FeatureEditorListWidget(QWidget*) + setfeatures(int) :void + getfeatures() :int {query} + getfeaturesstring() :QString {query} ELTE IK, Eseményvezérelt alkalmazások fejlesztése I 11:35
36 Megoldás (buildingtablemodel.cpp): QVariant BuildingTableModel::data(const QModelIndex &index, int role) const { if (!index.isvalid()) return QVariant(); // ha nem érvényes az index, üres adatot // adunk vissza if (index.column() >= 8 && index.column() <= 10 && role == Qt::TextAlignmentRole ) // szövegigazítás return QVariant(Qt::AlignRight Qt::AlignVCenter); ELTE IK, Eseményvezérelt alkalmazások fejlesztése I 11:36
37 Megoldás (buildingtablemodel.cpp): if (index.column() == 8 && ( role == Qt::DisplayRole role == Qt::EditRole)) { // apartmanok számának számítása QSqlQuery query; query.exec("select count(*) from apartment where building_id = " + this->data( this->index(index.row(), 0)).toString()); if (query.next()) return QVariant(query.value(0).toInt()); else return QVariant(0); ELTE IK, Eseményvezérelt alkalmazások fejlesztése I 11:37
38 Számított adatok szerkesztése A táblamodell nem csak a számított adatok lekérdezését, de szerkesztését is lehetővé teszi az adatok szerkesztését specializálhatjuk a setdata(<index>, <érték>, <szerep>) művelet felüldefiniálásával, amelyben megadhatjuk a számított adatok módosításának tényleges tevékenységét a számított oszlopot a szerkesztés előtt szerkeszthetővé kell tenni, ehhez felül kell definiálni az oszlopok állapotjelzőit visszaadó flags(<index>) műveletet a számított adott oszlopnak kiválaszthatónak (ItemIsSelectable) és szerkeszthetőnek (ItemIsEditable) kell lennie ELTE IK, Eseményvezérelt alkalmazások fejlesztése I 11:38
39 Számított adatok szerkesztése Pl.: class MyTableModel : public QSqlTableModel { bool setdata(const QModelIndex&, const QVariant&, int); Qt::ItemFlags flags(const QModelIndex&) const; }; Qt::ItemFlags MyTableModel::flags(const QModelIndex&) const { if (<számított oszlopban vagyunk>) return Qt::ItemIsEditable } ELTE IK, Eseményvezérelt alkalmazások fejlesztése I 11:39
40 Feladat: Egészítsük ki az épületek táblát egy állapot oszloppal, amely jelöli, hogy van-e tatarozás az épületben. Az állapot normál, ha mindegyik apartman kiadható, lezárt, ha mindegyik apartman tatarozás alatt van, egyébként felújítás alatt. Lehessen állítani az értéket úgy, hogy normál, vagy lezárt állapotba tudjuk helyezni az épületet. felveszünk a számított oszlopot, amely az adatot a apartmanok táblából gyűjti a megjelenítéshez egy legördülő menüt használunk, amely csak két értéket kap meg, nem mind a hármat felüldefiniáljuk az adatbeállítást, ahol az értékeket az apartman táblába írjuk ELTE IK, Eseményvezérelt alkalmazások fejlesztése I 11:40
41 Tervezés: QSqlRelationalTableModel BuildingTableModel + BuildingTableModel(QObject*) + insertrow(int) :void + flags(qmodelindex&) :Qt::ItemFlags {query} + columncount(qmodelindex&) :int {query} + data(qmodelindex&, int) :QVariant {query} + setdata(qmodelindex&, QVariant&, int) :bool + onbeforeinsert(qsqlrecord&) :void + ondatachanged(qmodelindex&, QModelIndex&) :void -_model BuildingDelegate QSqlRelationalDelegate + BuildingDelegate(QObject*) + paint(qpainter*, QStyleOptionViewItem&, QModelIndex&) :void {query} + createeditor(qwidget*, QStyleOptionViewItem&, QModelIndex&) :QWidget * {query} + seteditordata(qwidget*, QModelIndex&) :void {query} + setmodeldata(qwidget*, QAbstractItemModel*, QModelIndex&) :void {query} - shorelist() :QStringList {query} BuildingEditorDialog - _tableview :QTableView* - _model :BuildingTableModel* - _buttonbox :QDialogButtonBox* - _addbutton :QPushButton* - _removebutton :QPushButton* - _submitbutton :QPushButton* - _revertbutton :QPushButton* - _cityeditordialog :CityEditorDialog* QDialog + BuildingEditorDialog(QWidget*) + ~BuildingEditorDialog() + addbutton_clicked() :void + removebutton_clicked() :void + submitbutton_clicked() :void + tableview_doubleclicked(qmodelindex) :void - setupui() :void -_cityeditordialog CityEditorDialog QDialog - _listview :QListView* - _model :QSqlTableModel* - _buttonbox :QDialogButtonBox* - _addbutton :QPushButton* - _removebutton :QPushButton* + CityEditorDialog(QWidget*) + ~CityEditorDialog() + setmodel(qsqltablemodel*) :void + addbutton_clicked() :void + removebutton_clicked() :void - setupmodel() :void - setupui() :void QListWidget FeatureEditorListWidget + FeatureEditorListWidget(QWidget*) + setfeatures(int) :void + getfeatures() :int {query} + getfeaturesstring() :QString {query} ELTE IK, Eseményvezérelt alkalmazások fejlesztése I 11:41
42 Megoldás (buildingtablemodel.cpp): Qt::ItemFlags BuildingTableModel::flags(const QModelIndex& index) const { Qt::ItemFlags flag = QSqlTableModel::flags(index); // lekérdezzük az alap állapotjelzőt if (index.column() == 4) // a negyedik oszlop számított flag = Qt::ItemIsSelectable Qt::ItemIsEditable; // szerkeszthetővé tesszük } return flag; ELTE IK, Eseményvezérelt alkalmazások fejlesztése I 11:42
43 Megoldás (buildingtablemodel.cpp): bool BuildingTableModel::setData(const QModelIndex& index, const QVariant& value, int role) { if (index.column() == 4) { if (value.toint() == 0) { // az appartment táblát kell módosítanunk QSqlQuery query; return (query.exec("update appartment set renovation = 0 where building_id = " + this->data(this->index(index.row(), 0)).toString())); ELTE IK, Eseményvezérelt alkalmazások fejlesztése I 11:43
Adatok speciális megjelenítése
Adatok speciális megjelenítése Speciális adatmegjelenítés Az adatok csoportos megjelenítéshez a nézet számos osztályt (QListView, QTableView, QTreeView) biztosít, amelyekből származtatással továbbiakat
Eseményvezérelt alkalmazások fejlesztése I 10. előadás. Adatbázis-kezelés modell/nézet architektúrában. Giachetta Roberto
Eötvös Loránd Tudományegyetem Informatikai Kar Eseményvezérelt alkalmazások fejlesztése I 10. előadás Adatbázis-kezelés modell/nézet architektúrában Giachetta Roberto http://people.inf.elte.hu/groberto
Eseményvezérelt alkalmazások fejlesztése I 8. előadás. Adatbázis-kezelés modell/nézet architektúrában
Eötvös Loránd Tudományegyetem Informatikai Kar Eseményvezérelt alkalmazások fejlesztése I 8. előadás Adatbázis-kezelés modell/nézet architektúrában 2013.04.17. Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto
Adatbáziskezelés M/V architektúrában
Adatbáziskezelés M/V architektúrában Adatkezelés háromrétegű architektúrában Amikor a memóriában tárolunk és manipulálunk egy adathalmazt (adatmodell), amelyet rendszeresen szinkronizálunk a perzisztenciával,
Elemi alkalmazások fejlesztése IV. Adatbázis-kezelő GUI alkalmazás készítése 3. Összetett tábla karbantartása
Elemi alkalmazások fejlesztése IV. Adatbázis-kezelő GUI alkalmazás készítése 3. Összetett tábla karbantartása Készítette: Szabóné Nacsa Rozália nacsa@inf.elte.hu people.inf.elte.hu/nacsa/eaf4/ Qt 4 2007
Elemi alkalmazások fejlesztése III.
Elemi alkalmazások fejlesztése III. MDI alkalmazás II. (Számla) Készítette: Szabóné Nacsa Rozália nacsa@inf.elte.hu people.inf.elte.hu/nacsa/qt4/eaf3/ Qt 4 2007 1 Számla felépítése fejléc tábla 2 Az alkalmazás
3. Beadandó feladat dokumentáció
3. Beadandó feladat dokumentáció Készítette: Giachetta Roberto E-mail: groberto@inf.elte.hu Feladat: Készítsünk adatbázis alapú, grafikus felületű alkalmazást egy apartmanokkal foglalkozó utazási ügynökség
Alkalmazások fejlesztése III. Qt 4 /C++ alapú MDI alkalmazás: Számlakészítő program 2/3
Tartalomjegyzék Feladat...2 Az alkalmazás osztálydiagramja...2 Modell-nézet (model-view) tervezési minta (bevezetés)...3 Számlatételek kezelése, karbantartása ( táblázat kezelés )...4 A táblázatkezelő
Webes alkalmazások fejlesztése 4. előadás. Megjelenítés és tartalomkezelés (ASP.NET Core) Cserép Máté
Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése 4. előadás Megjelenítés és tartalomkezelés (ASP.NET Core) Cserép Máté mcserep@inf.elte.hu http://mcserep.web.elte.hu Nézetek
Webes alkalmazások fejlesztése 4. előadás. Megjelenítés és tartalomkezelés (ASP.NET)
Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése 4. előadás (ASP.NET) 2016 Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto Nézetek kezelése Sok esetben
Webes alkalmazások fejlesztése 4. előadás. Megjelenítés és tartalomkezelés (ASP.NET) Cserép Máté.
Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése 4. előadás (ASP.NET) Cserép Máté mcserep@inf.elte.hu http://mcserep.web.elte.hu Készült Giachetta Roberto jegyzete alapján
2. Beadandó feladat dokumentáció
2. Beadandó feladat dokumentáció Készítette: Giachetta Roberto E-mail: groberto@inf.elte.hu Feladat: Készítsünk programot a következő memóriajátékhoz. A játéktáblán mező foglal helyet, amelyek különböző
Fogalmak: Adatbázis Tábla Adatbázis sorai: Adatbázis oszlopai azonosító mező, egyedi kulcs Lekérdezések Jelentés Adattípusok: Szöveg Feljegyzés Szám
Fogalmak: Adatbázis: logikailag összefüggő információ vagy adatgyőjtemény. Tábla: logikailag összetartozó adatok sorokból és oszlopokból álló elrendezése. Adatbázis sorai: (adat)rekord Adatbázis oszlopai:
3. Beadandó feladat dokumentáció
3. Beadandó feladat dokumentáció Készítette: Giachetta Roberto E-mail: groberto@inf.elte.hu Feladat: Készítsünk programot a közismert Tic-Tac-Toe játékra. Ebben a játékban a játékosok egy -as játékmezőn
Választó lekérdezés létrehozása
Választó lekérdezés létrehozása A választó lekérdezés egy vagy több rekordforrásból származó adatokat jelenít meg. A választó lekérdezések a táblák, illetve az adatbázis tartalmát nem változtatják meg,
Elemi alkalmazások fejlesztése IV.
Elemi alkalmazások fejlesztése IV. C++/Qt adatbáziskezelő alkalmazás készítése Kdevelop környezetben I. Készítette: Szabóné Nacsa Rozália 1 MySql elindítása [nacsa@localhost nacsa]$ su Password:jelszó
MySql elindítása. Elemi alkalmazások fejlesztése IV. Feladat. Az alkalmazás adatbázisa
Elemi alkalmazások fejlesztése IV. C++/Qt adatbáziskezel ő alkalmazás készítése Kdevelop környezetben I. MySql elindítása [nacsa@localhost nacsa]$ su Password:jelszó [root@localhost nacsa]# /usr/bin/safe_mysqld
2. Beadandó feladat dokumentáció
2. Beadandó feladat dokumentáció Készítette: Giachetta Roberto E-mail: groberto@inf.elte.hu Feladat: Készítsünk programot a következő memóriajátékhoz. A játéktáblán mező foglal helyet, amelyek különböző
Adatbázis-kezelés ActiveX vezérl kkel 2.rész
Adatbázis-kezelés ActiveX vezérl kkel 2.rész Készítette: Szabóné Nacsa Rozália 2004. november Feladat Figyelmeztetés, Figyelmeztetés, ha ha betelt betelt a a csoport. csoport. Csoport Csoport kiválasztása
Adabáziselérés ODBC-n keresztül utasításokkal C#-ban
Adabáziselérés ODBC-n keresztül utasításokkal C#-ban 1. Előkészítés Access adatbázis lemásolása, ODBC DSN létrehozása Másoljuk le az alábbiakat: Mit Honnan Hova list.mdb p:\johanyák Csaba\Vizualis programozas\data\
Swing GUI készítése NetBeans IDE segítségével
Programozási Swing e NetBeans IDE segítségével Informatikai Kar Eötvös Loránd Tudományegyetem 1 Tartalom 1 2 2 Eddig a grafikus felhasználói felületet kódból hoztuk létre kézzel. A mi feladatunk volt az
HVK Adminisztrátori használati útmutató
HVK Adminisztrátori használati útmutató Tartalom felöltés, Hírek karbantartása A www.mvfportal.hu oldalon a bejelentkezést követően a rendszer a felhasználó jogosultsági besorolásának megfelelő nyitó oldalra
Adatbázis-kezelés az Excel 2013-ban
Molnár Mátyás Adatbázis-kezelés az Excel 2013-ban Magyar nyelvi verzió Csak a lényeg érthetően! www.csakalenyeg.hu Csak a lényeg érthetően! Microsoft Excel 2013 Kimutatás készítés relációs adatmodell alapján
DKÜ ZRT. A Portál rendszer felületének általános bemutatása. Felhasználói útmutató. Támogatott böngészők. Felületek felépítése. Információs kártyák
A Portál rendszer felületének általános bemutatása Felhasználói útmutató Támogatott böngészők Internet Explorer 9+ Firefox (legújabb verzió) Chrome (legújabb verzió) Felületek felépítése Információs kártyák
Bevezetés a Programozásba II 8. előadás. Polimorfizmus Giachetta Roberto
Pázmány Péter Katolikus Egyetem Információs Technológiai és Bionikai Kar Bevezetés a Programozásba II 8. előadás 2014.03.31. Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto Öröklődés
Java Programozás 9. Gy: Java alapok. Adatkezelő 5.rész
Java Programozás 9. Gy: Java alapok Adatkezelő 5.rész 15/1 B ITv: MAN 2018.04.22 A Keresés funkció Programlogika: 1. A keresés az etm táblamodellben fog keresni, és a találat rekordokat átmásolja egy másik
Adatbáziskezelés alapjai. jegyzet
Juhász Adrienn Adatbáziskezelés alapja 1 Adatbáziskezelés alapjai jegyzet Készítette: Juhász Adrienn Juhász Adrienn Adatbáziskezelés alapja 2 Fogalmak: Adatbázis: logikailag összefüggı információ vagy
Eseményvezérelt alkalmazások fejlesztése II 12. előadás. Objektumrelációs adatkezelés (ADO.NET) Giachetta Roberto
Eötvös Loránd Tudományegyetem Informatikai Kar Eseményvezérelt alkalmazások fejlesztése II 12. előadás Objektumrelációs adatkezelés (ADO.NET) Giachetta Roberto A jegyzet az ELTE Informatikai Karának 2014.
ABAP dictionary objektumok SAP adatmodell Táblák kezelése. Az SAP programozása 1. Tarcsi Ádám
ABAP dictionary objektumok SAP adatmodell Táblák kezelése Az SAP programozása 1. Tarcsi Ádám 1. Data dictionary Tarcsi Ádám, ELTE Informatikai Kar: Az SAP programozása 1. 2 Adat modellezés az SAP-ban Adatmodellezés
MTMT adminisztrátori felület és teendők. Mátyás Melinda, Szabó Panna november 4. ELTE Egyetemi Könyvtár
MTMT adminisztrátori felület és teendők Mátyás Melinda, Szabó Panna 2015. november 4. ELTE Egyetemi Könyvtár Tartalom Az adminisztrátori kezdőoldal Szerzők adatainak kezelése Közlemények keresése Adminisztrátori
Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010
Programozási technikák Pál László Sapientia EMTE, Csíkszereda, 2009/2010 12. ELŐADÁS Adatbázis-kezelés Delphiben 2 Adatmegjelenítés lekérdezés segítségével A táblákhoz hasonlóan a lekérdezések is az adatbázis
Bizonylatok felvitele mindig a gazdasági eseménnyel kezdődik, majd ezután attól függően jelennek meg dinamikusan a további adatmezők.
Bizonylatok felvitele Bizonylatok felvitele mindig a gazdasági eseménnyel kezdődik, majd ezután attól függően jelennek meg dinamikusan a további adatmezők. Fej Gazdasági esemény Kezdjük el begépelni a
ReszlAd fájl, kitöltési útmutató:
1 ReszlAd fájl, kitöltési útmutató: A ReszlAd táblázat egy adott látogatás részletes adatait tartalmazza. A szaktanácsadó által hiánytalanul kitöltött, és elnevezett fájlt e-mail üzenetben kérjük elküldeni
SEGÉDLET ADATKEZELÉS MS EXCEL-BEN. Tároljuk az adatokat Excel munkalapon. Megjegyzés: A feladatokat MS Office Excel 2003- ban oldottuk meg.
SEGÉDLET ADATKEZELÉS MS EXCEL-BEN Tekintsük az alábbi példát: Népesedési tendenciák a közép-kelet-európai fővárosokban, Nemzetközi összehasonlítások 9. KSH, Budapest 2005. Tároljuk az adatokat Excel munkalapon.
Tartalom Képernyő részei... 2
Tartalom Képernyő részei... 2 Sötétszürke menü részei... 2 1. Menü kibontása... 2 2. Eszközök... 3 3. Műveletek... 3 Világosszürke menü részei... 4 Kijelölés... 4 Okos kijelölés... 5 Körülvágás... 6 Vegyes
FELHASZNÁLÓI ÚTMUTATÓ
FELHASZNÁLÓI ÚTMUTATÓ 0.1v. GYŰJTŐI TÉGLÁK LISTÁZÁSA A listázó elérése menüből: Téglák/Gyűjtői téglák Mielőtt lekérnénk egy listát, lehetőség van bizonyos szűrési feltételek megadására a Listázás keretrészen
Egyéni párbeszédpanel Excelben
Egyéni párbeszédpanel Excelben Készítsünk olyan, kötelező gépjármű-felelősségbiztosítás díjszámítására szolgáló párbeszédpanelt, amely a munkafüzet betöltésekor megjelenik. A jármű kategóriájától (hengerűrtartalomtól)
Programozási technológia
Programozási technológia Swing GUI készítése NetBeans IDE segítségével Dr. Szendrei Rudolf ELTE Informatikai Kar 2018. Bevezető Eddig a grafikus felhasználói felületet kódból hoztuk létre kézzel. A mi
MS ACCESS 2010 ADATBÁZIS-KEZELÉS ELMÉLET SZE INFORMATIKAI KÉPZÉS 1
SZE INFORMATIKAI KÉPZÉS 1 ADATBÁZIS-KEZELÉS MS ACCESS 2010 A feladat megoldása során a Microsoft Office Access 2010 használata a javasolt. Ebben a feladatban a következőket fogjuk gyakorolni: Adatok importálása
Az MS Excel táblázatkezelés modul részletes tematika listája
Az MS Excel táblázatkezelés modul részletes tematika listája A táblázatkezelés alapjai A táblázat szerkesztése A táblázat formázása A táblázat formázása Számítások a táblázatban Oldalbeállítás és nyomtatás
A Paint program használata
A Paint program használata A Windows rendszerbe épített Paint program segítségével képeket rajzolhat, színezhet és szerkeszthet. A Paint használható digitális rajztáblaként. Egyszerű képek és kreatív projektek
Access gyakorlati feladatok lépésről lépésre
Access gyakorlati feladatok lépésről lépésre 1. feladat: Hajómenetrend A balatoni hajómenetrend rendelkezésünkre áll a menetrend.txt állományban. Készítsen új adatbázist HAJO néven! A mellékelt adatállományt
az adatbevitel szabályozása, alapok
az adatbevitel szabályozása, alapok De, Tanító bácsi! Én úgy tudom, hogy ezt igazából, csak adatbázisban tudjuk megtenni! Hááát Ez igaz Pistike! Bár egy-két eszköz a táblázat-kezelő programban is a rendelkezésünkre
Adatbázis-kezelés Access XP-vel. Tanmenet
Adatbázis-kezelés Access XP-vel Tanmenet Adatbázis-kezelés Access XP-vel TANMENET- Adatbázis-kezelés Access XP-vel Témakörök Javasolt óraszám 1. Bevezetés az Access XP használatába 2 tanóra (90 perc)
Alkalmazott Modul III 6. gyakorlat. Objektumorientált programozás: öröklődés és polimorfizmus
Eötvös Loránd Tudományegyetem Természettudományi Kar Alkalmazott Modul III 6. gyakorlat : öröklődés és polimorfizmus 2011.10.25. Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto
Egységes és objektumközpontú adatbázis-kezelés (2. rész)
Egységes és objektumközpontú adatbázis-kezelés (2. rész) A folytatásában a bemutatjuk, hogyan kezelhetünk Qt rendszer alatt SQL sormutatót, és készíthetünk grafikus felületet programoknak a Qt Designer
Adatbázis kezelés Delphiben. SQL lekérdezések
Adatbázis kezelés Delphiben. SQL lekérdezések Structured Query Language adatbázisok kezelésére szolgáló lekérdező nyelv Szabályok: Utasítások tetszés szerint tördelhetők Utasítások végét pontosvessző zárja
OOP: Java 8.Gy: Abstract osztályok, interfészek
OOP: Java 8.Gy: Abstract osztályok, interfészek 26/1 B ITv: MAN 2019.04.03 Abszrakt metódus és absztrakt osztály. Gyakran előfordul a tervezés során, hogy egy osztály szintjén tudjuk, hogy valamilyen metódus
A gyakorlat során az alábbi ábrán látható négy entitáshoz kapcsolódó adatbevitelt fogjuk megoldani.
Vizuális programozás 1. A gyakorlat célja A gyakorlat célja a Könyvtár alkalmazás folytatása az előző gyakorlaton elkészített grafikus felület felhasználásával. Elsőként lemásoljuk az előző gyakorlat eredményeként
POSZEIDON dokumentáció (1.2)
POSZEIDON dokumentáció (1.2) Bevezetés a Poszeidon rendszer használatába I. TELEPÍTÉS Poszeidon alkalmazás letölthető: www.sze.hu/poszeidon/poszeidon.exe Lépések: FUTTATÁS / (FUTTATÁS) / TOVÁBB / TOVÁBB
Választó lekérdezések
A választó lekérdezés a leggyakrabban előforduló lekérdezés típus. Egy vagy több táblából hív le adatokat, és az eredményt egy adatlapon jeleníti meg, ahol a rekordokat frissíteni lehet (bizonyos keretek
BME MOGI Gépészeti informatika 7.
BME MOGI Gépészeti informatika 7. 1. feladat Írjon Windows Forms alkalmazást egy kör és egy pont kölcsönös helyzetének vizsgálatára! A feladat megoldásához hozza létre a következő osztályokat! Pont osztály:
Webes alkalmazások fejlesztése 10. előadás. Webszolgáltatások tesztelése (ASP.NET Core) Cserép Máté
Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése 10. előadás Webszolgáltatások tesztelése (ASP.NET Core) Cserép Máté mcserep@inf.elte.hu http://mcserep.web.elte.hu Tesztelés
ALAPOK. 0 és 255 közé eső számértékek tárolására. Számértékek, például távolságok, pontszámok, darabszámok.
ADATBÁZIS-KEZELÉS ALAPOK Főbb Adattípusok: Igen/Nem Bájt Ez az adattípus logikai adatok tárolására alkalmas. A logikai adatok mindössze két értéket vehetnek fel. (Igen/Nem, Igaz/Hamis, Férfi/Nő, Fej/Írás
Programozási nyelvek Java
Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 13. előadás Throwable Error Exception RuntimeException IOException Saját (általában) Nem ellenörzött kivételek (Unchecked
Felhasználó által definiált adattípus
Felhasználó által definiált adattípus C++ Izsó Tamás 2017. február 24. Izsó Tamás Felhasználó által definiált adattípus/ 1 Irodalom Izsó Tamás Felhasználó által definiált adattípus/ 2 Programtervezési
Eseményvezérelt alkalmazások fejlesztése I 11. előadás. Szoftverek tesztelése
Eötvös Loránd Tudományegyetem Informatikai Kar Eseményvezérelt alkalmazások fejlesztése I 11. előadás Szoftverek tesztelése 2014 Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto
Oktatási anyag az MLSZ-IFA rendszerhez
Oktatási anyag az MLSZ-IFA rendszerhez Nyilvántartási szám: ISO 9001: 503/1256(2)-1177(2) BIZALMAS INFORMÁCIÓ JET-SOL JET-SOL TARTALOMJEGYZÉK 1 Sportszervezeti adminisztráció... 3 1.1 Sportszervezeti adatok
A főképernyő felső ikonsorába kerültek a sajátmappa különböző füleire vezérlő ikonok, valamint a gyakran használt műveletek.
2010.10.04. programverzió újdonságai Papirusz Ügyiratkezelő Rendszer Saját mappával, főképernyővel kapcsolatos változások A főképernyő felső ikonsorába kerültek a sajátmappa különböző füleire vezérlő ikonok,
RBLDNS DNS-based blocklists management felhasználói kézikönyv
RBLDNS DNS-based blocklists management felhasználói kézikönyv (INTEGRITY Kft. 2013. 06. 27.) RBLDNS Webes kezelőfelülete Az INTEGRITY által működtetett RBLDNS rendszer webes felületét a spamdns.eu/rbl/
Elemi alkalmazások fejlesztése IV. Adatbáziskezel alkalmazás készítése QtDesignerben. Készítette: Szabóné Nacsa Rozália
Elemi alkalmazások fejlesztése IV. Adatbáziskezel ő alkalmazás készítése QtDesignerben Készítette: Szabóné Nacsa Rozália 1 Származtatásos modulszerkezet Q t form.ui U formbase.h Örökl ő dés form.h formbase.cpp
CabMap hálózat-dokumentáló rendszer
CabMap hálózat-dokumentáló rendszer A CabMap hálózat-dokumentáló rendszer elsősorban passzív optikai hálózatok elektronikus dokumentálására szolgál. A rendszer hatékony és rugalmas hozzáférést biztosít
A feladatok megoldásához felhasználandó osztályok leírásait az alábbi URL-en találja meg: http://download.oracle.com/javase/6/docs/api/
Java Swing MVC labor Készítette: Budai Péter, BME IIT, 2012. A feladatok megoldásához felhasználandó osztályok leírásait az alábbi URL-en találja meg: http://download.oracle.com/javase/6/docs/api/ Továbbá
Webes alkalmazások fejlesztése 8. előadás. Webszolgáltatások megvalósítása (ASP.NET WebAPI)
Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése 8. előadás (ASP.NET WebAPI) 2016 Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto A webszolgáltatás
Java Programozás 6. Gy: Java alapok. Adatkezelő 2.rész
Java Programozás 6. Gy: Java alapok Adatkezelő 2.rész 25/1 B ITv: MAN 2018.04.13 A feladat Feladat: folytassuk a panel életre keltését! - Alakítsuk ki a Lista panelt - Betöltéskor olvassuk be az adatokat
A jobboldalon a pnlright egy Stacked Widget Állítsuk be az első lapot és nevezzük el pnldraw-ra:
A Rajzolás lap A rajzolás lap elemi rajzolási lehetőségek bemutatására szolgál. A rajzolás a jobboldali pnlright widget egyik lapjára rakott widgetre történik. A pnlright egy több lapot tartalmazó widget
munkafüzet open eseményéhez
Makrók használata az Excelben - munkafüzet open eseményéhez VBA-eljárás létrehozása Az Auto_Open makróval kapcsolatos fenti korlátozások megkerülhetők az Open eseményhez rendelt VBA-eljárással. Példa Auto_open
Thermo1 Graph. Felhasználói segédlet
Thermo1 Graph Felhasználói segédlet A Thermo Graph program a GIPEN Thermo eszközök Windows operációs rendszeren működő grafikus monitorozó programja. A program a telepítést követően azonnal használható.
FELHASZNÁLÓI ÚTMUTATÓ
FELHASZNÁLÓI ÚTMUTATÓ VÉRADÁS IDŐPONT SZERKESZTŐ (verzió: 1.2) 2013. április 1. Tartalomjegyzék 1. Telepítés és indítás... 3 2. Frissítés... 3 3. Beállítás... 4 4. Felület... 4 5. Véradó helyszínek...
Banki export leírás. A modul egy erre használatos termékszám aktiválása után érhető el.
Banki export leírás Célja: A Banki export a Kulcs-Könyvelés programba épülő modul, mely a kintlévőséges szállító számlákról, valamint a túlfizetett vevői számlákról készít utalási fájlt, mely a banki rendszerbe
Diagram készítése. Diagramok formázása
Diagram készítése Diagramok segítségével a táblázatban tárolt adatainkat különféle módon ábrázolhatjuk. 1. A diagram készítésének első lépése az adatok kijelölése a táblázatban, melyekhez diagramot szeretnénk
INFORMATIKAI ALAPISMERETEK
Informatikai alapismeretek középszint 1021 ÉRETTSÉGI VIZSGA 2011. május 13. INFORMATIKAI ALAPISMERETEK KÖZÉPSZINTŰ ÍRÁSBELI ÉRETTSÉGI VIZSGA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ NEMZETI ERŐFORRÁS MINISZTÉRIUM
Általános szoftver architektúrák
Általános szoftver architektúrák Szoftverek architektúrája Szoftver architektúrának nevezzük a szoftver fejlesztése során meghozott elsődleges tervezési döntések halmazát. Az architektúra létrehozása során
Bevezetés a Programozásba II 11. előadás. Adatszerkezetek megvalósítása. Adatszerkezetek megvalósítása Adatszerkezetek
Pázmány Péter Katolikus Egyetem Információs Technológiai és Bionikai Kar Bevezetés a Programozásba II 11. előadás 2014.05.12. Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto Adatszerkezetek
ETA tárgyfelelős. Munka az ETA-ban tárgyfelelősként
ETA tárgyfelelős Munka az ETA-ban tárgyfelelősként Tartalomjegyzék Angol nyelvű tárgy létrehozása... 2 Saját tárgyak szerkesztése (idegen-nyelvű is)... 5 Nyelvi habilitáció jelölése... 8 Angol nyelvű tárgy
Webes alkalmazások fejlesztése 3. előadás. Objektumrelációs adatkezelés (ASP.NET)
Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése 3. előadás Objektumrelációs adatkezelés (ASP.NET) 2016 Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto
Könyvtári nyilvántartás
Könyvtári nyilvántartás Feladat: Készítette: Az alkalmazás lehetővé teszi egy könyvtári könyv kikölcsönzésének és visszahozásának, az könyvtártagok tagdíj-befizetéseinek és az olvasó terembe történő be-
Webes kurzus kezelés folyamata Oktatói felületek
Webes kurzus kezelés folyamata Oktatói felületek A kurzusok kezelésével kapcsolatban számos paraméterezési lehetőség áll rendelkezésre az ETR rendszerében. Jelen dokumentumban igyekeztünk a kurzusok oktatói
A beszámoló készítés lépéseinek bemutatása egy mintacég Egyszerű Kft. segítségével
A beszámoló készítés lépéseinek bemutatása egy mintacég Egyszerű Kft. segítségével 1. A vizsgált cég állományának létrehozása (II.1.2) Egyszerű Kft. 2010. évi állományának létrehozása: DigitAudit főmenü
TABULÁTOROK TÁBLÁZATOK KÉSZÍTÉSE. A táblázatok készítésének lehetőségei:
TABULÁTOROK A tabulátorokat a szavak soron belüli pontos pozicionálására használjuk. A tabulátorokat valamilyen pozícióhoz kötjük. A pozíciók beállíthatók vonalzón vagy a Formátum menü Tabulátorok menüpontjának
Adatintegritás ellenőrzés Felhasználói dokumentáció verzió 2.0 Budapest, 2008.
Adatintegritás ellenőrzés Felhasználói dokumentáció verzió 2.0 Budapest, 2008. Változáskezelés Verzió Dátum Változás Pont Cím Oldal Kiadás: 2008.10.30. Verzió: 2.0. Oldalszám: 2 / 11 Tartalomjegyzék 1.
Felhasználói kézikönyv a WEB EDInet rendszer használatához
Felhasználói kézikönyv a WEB EDInet rendszer használatához A WEB EDInet rendszer használatához internet kapcsolat, valamint egy internet böngésző program szükséges (Mozilla Firefox, Internet Explorer).
Programozás BMEKOKAA146. Dr. Bécsi Tamás 10. Előadás
Programozás BMEKOKAA146 Dr. Bécsi Tamás 10. Előadás A Timer komponens Tulajdonságok: Típus Tulajdonság Magyarázat bool Enabled Engedélyezve int Interval Meghívás periódusa ms-ban Metódusok: Típus Metódus
Tervezett fakitermelések bejelentése
Tervezett fakitermelések bejelentése ERDŐGAZDÁLKODÁSI HATÓSÁGI BEJELENTÉSEK/TERVEZETT ERDŐGAZDÁLKODÁSI TEV. BEJELENTÉSE/TERVEZETT FAKITERMELÉSEK BEJELENTÉSE BEVEZETÉS A Tervezett fakitermelések bejelentése
Táblázatok kezelése. 1. ábra Táblázat kezelése menüből
Táblázat beszúrása, létrehozása A táblázatok készítésének igénye már a korai szövegszerkesztőkben felmerült, de ezekben nem sok lehetőség állt rendelkezésre. A mai szövegszerkesztőket már kiegészítették
Dokumentum létrehozása/módosítása a portálon:
Dokumentum létrehozása/módosítása a portálon: 1. Belépés a szerkesztőfelületre A következő webcímre belépve - http://www.zalaegerszeg.hu/licoms/login - megjelenik a szerkesztőfelület beléptető ablaka,
NEPTUN_GOLYA. (Felvételi konvertáló modul) Budapest, 2002
(Felvételi konvertáló modul) S Budapest, 2002 TARTALOM TARTALOM 2 1. BEVEZETÉS 3 2. HASZNÁLAT 4 2.1. Bejelentkezés adatáttöltéshez 5 2.1.1. Státusz információk 8 2.1.2. Módosítás véglegesítése 12 2.2.
A program telepítése
program telepítése Töltse le a telepítőt a www.kocheskochkft.hu internetes oldalról. Programjaink menü alatt válassza a Egyszerűsített foglalkoztatással kapcsolatos nyilvántartás programot, kattintson
JLR EPC. Gyors kezdés útmutatója. Tartalom. Hungry Version 2.0. Lépésenkénti gyakorlati útmutató Képernyős útmutató
JLR EPC Gyors kezdés útmutatója Tartalom Lépésenkénti gyakorlati útmutató.....2-7 Képernyős útmutató........8-10 Hungry Version 2.0 JLR EPC Gyors kezdés útmutatója 1. Az alkalmazásba való belépés Nyissa
Verziószám 2.2 Objektum azonosító (OID) Hatálybalépés dátuma szeptember 2.
PDF dokumentum aláírása és időbélyegzése: Adobe Reader XI és Adobe Acrobat Reader DC Verziószám 2.2 Objektum azonosító (OID) Hatálybalépés dátuma 2016. szeptember 2. Tartalom 1. Bevezető...3 2. Aláíró
Cikktípusok készítése a Xarayában
Cikktípusok készítése a Xarayában A Xaraya legfontosabb tulajdonsága az egyedi cikktípusok egyszerű készítésének lehetősége. Ezzel kiküszöbölhető egyedi modulok készítése, hiszen néhány kattintással tetszőleges
VARIO Face 2.0 Felhasználói kézikönyv
VARIO Face 2.0 Felhasználói kézikönyv A kézikönyv használata Mielőtt elindítaná és használná a szoftvert kérjük olvassa el figyelmesen a felhasználói kézikönyvet! A dokumentum nem sokszorosítható illetve
ECDL Táblázatkezelés. www.nomina3p.hu 1. 4.1.1 A táblázatkezelés első lépései. 4.1.2 Beállítások elvégzése
4.1 Az alkalmazás 4.1.1 A táblázatkezelés első lépései 4.1.2 Beállítások elvégzése 4.1.1.1 A táblázatkezelő alkalmazás megnyitása és bezárása. 4.1.1.2 Egy és több munkafüzet (dokumentum) megnyitása. 4.1.1.3
Elemi alkalmazások fejlesztése III.
Elemi alkalmazások fejlesztése III. Memóriajáték 1. Készítette: Szabóné Nacsa Rozália nacsa@inf.elte.hu people.inf.elte.hu/nacsa/qt4/eaf3/ Qt 4 2007 1 memorygame Játék közben 2 memorygame Kártyák kiválasztása
Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT október október 26. Adatbázisok 1 / 17
Adatbázisok 8. gyakorlat SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT 2015. október 26. 2015. október 26. Adatbázisok 1 / 17 SQL nyelv Structured Query Language Struktúrált lekérdez
LBRA6i integrált rendszer
LBRA6i integrált rendszer LIBRA 6i logolás és a log megtekintése Készítette: Libra Szoftver Zrt. Létrehozás dátuma: 2005.12.15. Utolsó módosítás: 2014.10.30. Referencia szám: LIBRA6i_UZEM_V_1.5 Verzió:
SAP HR Általános lekérdező Ad-hoc-query
Tranzakció neve: S_PHO_48000513 Ad-hoc query A használathoz célszerű a Favoritok/tranzakció beszúrása menüponttal a favoritok közé felvenni. 1. oldal, összesen: 18 A tranzakció elindítása után a következő
Szöveges műveletek. Mielőtt nekikezdenénk első szövegünk bevitelének, tanuljunk meg néhány alapvető műveletet a 2003-as verzió segítségével:
Alapvető szabályok Mielőtt nekikezdenénk első szövegünk bevitelének, tanuljunk meg néhány alapvető műveletet a 2003-as verzió segítségével: Minden szöveges elem szövegdobozban, objektumban helyezkedik
Egészítsük ki a Drupal-t. Drupal modul fejlesztés
Egészítsük ki a Drupal-t Drupal modul fejlesztés Drupal 6.0 2008. február 13. Miért írjunk Drupal modult? Nincs az igényeinknek megfelelő modul Valamilyen közösségi igény kielégítése Valami nem úgy működik